代码拉取完成,页面将自动刷新
#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)
{
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。