1 Star 3 Fork 0

邮箱猫/qtForOpencv

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
projectiondialog.cpp 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
邮箱猫 提交于 2021-12-02 19:09 . 添加特征实验代码
#include "projectiondialog.h"
#include "ui_projectiondialog.h"
ProjectionDialog::ProjectionDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ProjectionDialog)
{
ui->setupUi(this);
}
ProjectionDialog::~ProjectionDialog()
{
delete ui;
}
void ProjectionDialog::flushImage(QGraphicsView * view, Mat showImage){
Mat image = showImage.clone();
cvtColor(image,image,CV_GRAY2RGB);
QImage img = QImage((const unsigned char*)(image.data),image.cols,image.rows,image.step,QImage::Format_RGB888);
QGraphicsScene *scene = new QGraphicsScene;
//scene->setSceneRect(0,0,img.width(),img.height());
scene->addPixmap(QPixmap::fromImage(img));
view->setScene(scene);
view->adjustSize();
view->show();
}
void ProjectionDialog::receiveImage(Mat image){
this->src=image.clone();
cvtColor(src,src,CV_BGR2GRAY);
//水平投影
horizon=Mat::zeros(src.rows,src.cols,CV_8UC1);
//垂直投影
vertical=Mat::zeros(src.rows,src.cols,CV_8UC1);
flushImage(ui->graphicsView_src,src);
QVector<int> vert,hori;
int maxVert=0,maxHori=0;
//计算像素个数
for(int i=0;i<src.rows;++i){
int num=0;
for(int j=0;j<src.cols;++j){
if(src.at<uchar>(i,j)>0){
num++;
}
}
vert.append(num);
}
//求取最大值进行归一化
for(int i=0;i<vert.length();++i){
if(vert[i]>maxVert) maxVert=vert[i];
}
for(int i=0;i<vert.length();++i){
vert[i]=vert[i]*src.cols/maxVert;
line(vertical,Point2f(0,i),Point2f(vert[i],i),Scalar(255),1);
}
//line(vertical,Point2f(src.cols*0.05,0),Point2f(src.cols*0.05,src.rows),Scalar(255),1);
flushImage(ui->graphicsView_vertical,vertical);
for(int i=0;i<src.cols;++i){
int num=0;
for(int j=0;j<src.rows;++j){
if(src.at<uchar>(j,i)>0){
num++;
}
}
hori.append(num);
}
for(int i=0;i<hori.length();++i){
if(hori[i]>maxHori) maxHori=hori[i];
}
for(int i=0;i<hori.length();++i){
hori[i]=hori[i]*src.rows/maxHori;
line(horizon,Point2f(i,src.rows-1),Point2f(i,src.rows-1-hori[i]),Scalar(255),1);
}
flushImage(ui->graphicsView_horizontal,horizon);
}
void ProjectionDialog::on_tabWidget_currentChanged(int index)
{
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/yuka_kitten/qt-for-opencv.git
git@gitee.com:yuka_kitten/qt-for-opencv.git
yuka_kitten
qt-for-opencv
qtForOpencv
master

搜索帮助