边缘检测内容学习!!!
第一次在****上发表文章,今天掌握了图片的边缘检测内容,想分享出来。一是加深印象,二是想给需要的朋友一些方便,因为学了这么多天我也是借助****了解了很多,所以一起学习!分享!进步!
几个边缘检测的主要代码:
canny边缘检测:
Mat cvimg = imread(cvfile);
Mat edgeImg;
Canny(cvimg,edgeImg,50,50);
sobel边缘检测:
Mat edgeImg;
Mat x_edgeImg, y_edgeImg;
Mat abs_x_edgeImg, abs_y_edgeImg;
Sobel(cvimg,x_edgeImg, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(x_edgeImg, abs_x_edgeImg);
Sobel(cvimg, y_edgeImg, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(y_edgeImg, abs_y_edgeImg);
addWeighted(abs_x_edgeImg, 0.5, abs_y_edgeImg, 0.5, 0, edgeImg);
主程序如下:
Laplacian边缘检测
Mat cvimg = imread(cvfile);
Mat lapImg;
Mat edgeImg;
Laplacian(cvimg, lapImg, CV_16S, 5, 1, 0, BORDER_DEFAULT);
convertScaleAbs(lapImg, edgeImg);
我用了4个pushbutton,定义了四个槽函数,可以显示原图以及这三种处理,程序大体相同,我拿canny举例
//canny边缘检测
QString fileName = QFileDialog::getOpenFileName();
QPixmap img(fileName);
std::string stdfile = fileName.toStdString();
cv::String cvfile = stdfile;
Mat cvimg = imread(cvfile);
Mat edgeImg;
Canny(cvimg,edgeImg,50,50);
QImage grayqing = Mat2QImage(edgeImg);
QPixmap imgg = QPixmap::fromImage(grayqing);
QPixmap imt = imgg.scaled(ui.label->width(),ui.label->height(),Qt::KeepAspectRatio);
ui.label1->setPixmap(imt);
以上是我的总结,希望能帮到你。