OpenCV——canny算子
生活随笔
收集整理的這篇文章主要介紹了
OpenCV——canny算子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. opencv——Canny算子
?
Canny 的目標是找到一個最優(yōu)的邊緣檢測算法,最優(yōu)邊緣檢測的含義是:
最好的檢測:?算法能夠盡可能多地標識出圖像中的實際邊緣。
最好的定位: 標識出的邊緣要盡可能與實際圖像中的實際邊緣盡可能接近。
最小的響應(yīng):圖像中的邊緣只能標識一次,并且可能存在的圖像噪聲不應(yīng)標識為邊緣。
第一步:用高斯平滑濾波器卷積降噪。第二步:計算梯度幅值和方向。第三步:非極大值抑制。第四步:滯后閾值
? ? ?最簡單的Canny用法:
?
#include<opencv2\opencv.hpp>using namespace cv;
int main()
{Mat src, src1;src = imread("h:\\1.jpg");imshow("原始圖", src);Canny(src, src1, 150, 100, 3);//1.輸入圖 2.輸出圖 3.高域值 4.低閾值 5.孔徑大小,默認值為3imshow("效果圖", src1);waitKey(0);return 0;
}
運行結(jié)果:
?
高階Canny用法:
轉(zhuǎn)換稱灰度圖,降噪,用Canny,將邊緣作掩碼,拷貝原圖到效果圖,得到彩色邊緣圖。
?
#include<opencv2\opencv.hpp>using namespace cv;
int main(void)
{Mat src, dst, edge, gray;src = imread("h:\\1.jpg");imshow("原始圖", src);//創(chuàng)建與src同類型,同大小的矩陣dstdst.create(src.size(), src.type());//轉(zhuǎn)換灰度圖cvtColor(src, gray, COLOR_BGR2GRAY);//用3*3內(nèi)核降噪blur(gray, edge, Size(3, 3));//運行Canny算子Canny(edge, edge, 3, 9, 3);//將dst圖片所有像素設(shè)置為0,變成黑色dst = Scalar::all(0);//邊緣圖做掩碼,將原圖拷貝到效果圖中src.copyTo(dst,edge);imshow("效果圖", dst);waitKey(0);return 0;
} Mat src, dst, edge, gray;src = imread("h:\\1.jpg");imshow("原始圖", src);//創(chuàng)建與src同類型,同大小的矩陣dstdst.create(src.size(), src.type());//轉(zhuǎn)換灰度圖cvtColor(src, gray, COLOR_BGR2GRAY);//用3*3內(nèi)核降噪blur(gray, edge, Size(3, 3));//運行Canny算子Canny(edge, edge, 3, 9, 3);//將dst圖片所有像素設(shè)置為0,變成黑色dst = Scalar::all(0);//邊緣圖做掩碼,將原圖拷貝到效果圖中src.copyTo(dst,edge);imshow("效果圖", dst);waitKey(0);return 0;
}
?
?
總結(jié)
以上是生活随笔為你收集整理的OpenCV——canny算子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV——简易图形画法:画奥运五环
- 下一篇: OpenCV——膨胀与腐蚀