opencv3/C++圖像邊緣提取方式
更新時間:2019年12月10日 15:13:53 作者:阿卡蒂奧
今天小編就為大家分享一篇opencv3/C++圖像邊緣提取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
canny算子實現(xiàn)
使用track bar 調整canny算子參數(shù),提取到合適的圖像邊緣。
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
void trackBar(int, void*);
int s1=0,s2=0;
Mat src, dst;
int main()
{
src = imread("E:/image/image/daibola.jpg");
if(src.empty())
{
printf("can not load image \n");
return -1;
}
cvNamedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
dst = src.clone();
cvNamedWindow("output", CV_WINDOW_AUTOSIZE);
createTrackbar("canny1", "output", &s1, 255, trackBar);
createTrackbar("canny2", "output", &s2, 255, trackBar);
GaussianBlur(src,src,Size(3,3),0);
waitKey();
return 0;
}
void trackBar(int, void*)
{
Canny(src,dst,s1,s2,3);
imshow("output", dst);
}

Sobel算子實現(xiàn)
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat src, dst;
src = imread("E:/image/image/daibola.jpg");
if(src.empty())
{
printf("can not load image \n");
return -1;
}
dst = Mat::zeros(src.size(), src.type());
cvNamedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
Mat kernel = (Mat_<int>(2,2)<<0,1,-1,0);
filter2D(src,dst,-1,kernel,Point(-1,-1),0.0);
Mat xgrad, ygrad;
Sobel(src,xgrad,CV_16S,1,0,3);
Sobel(src,ygrad,CV_16S,0,1,3);
convertScaleAbs(xgrad,xgrad);
convertScaleAbs(ygrad,ygrad);
addWeighted(xgrad,0.5,ygrad,0.5,0,dst);
//addWeighted(dst,0.5,src,1,0,dst);
cvNamedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey();
return 0;
}

以上這篇opencv3/C++圖像邊緣提取方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C語言實現(xiàn)線索二叉樹的前中后創(chuàng)建和遍歷詳解
這篇文章主要為大家詳細介紹了C語言實現(xiàn)線索二叉樹的前中后創(chuàng)建和遍歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
VS2019項目打包生成.exe文件與Setup的步驟實現(xiàn)
這篇文章主要介紹了VS2019項目打包生成.exe文件與Setup的步驟實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03

