C/C++ OpenCV之Canny边缘检测
生活随笔
收集整理的這篇文章主要介紹了
C/C++ OpenCV之Canny边缘检测
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
邊緣檢查的一般步驟
1.濾波
邊緣檢查的算法主要是基于圖像強度的一階和二階倒數(shù),但倒數(shù)通常對噪聲很敏感,因此必須采用濾波器來
改善與噪聲有關(guān)的邊緣檢測器的性能。
2.增強
增強邊緣的基礎(chǔ)是確定圖像各點的領(lǐng)域強度的變化值。增強算法可以將圖像灰度點領(lǐng)域強度值有顯著變化的點
凸顯出來
3.檢測
常用的方法是通過閾值化方法來檢測
void Canny(
inputArray image,
outputArray edges,
double thresholdint1,
double threshold2,
int apertursSize=3,
bool L2gradient=false
)
通常第三個參數(shù)和第四個參數(shù)的比值是3:1和2:1
下面是代碼:
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main() {Mat src = imread("1.jpg");Mat src1 = src;Mat out;namedWindow("原圖");imshow("原圖", src);//方法一3以下的版本Canny(src, out, 150, 100);namedWindow("方法一的效果圖");imshow("方法一的效果圖",out);//方法二3以上的版本Mat dst, edge, gray;//創(chuàng)建一個與src1一樣的矩陣dst.create(src1.size(), src1.type());//將原圖像轉(zhuǎn)為灰度cvtColor(src1, gray, COLOR_RGB2GRAY);//濾波(降噪)blur(gray, edge, Size(3, 3));//cannyMat out2;Canny(edge, out2, 15, 10);dst = Scalar::all(0);src1.copyTo(dst, out2);namedWindow("方法二的效果圖");imshow("方法二的效果圖", out2);waitKey();return 0; }運行結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的C/C++ OpenCV之Canny边缘检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: system var mysql_MyS
- 下一篇: 微机个人笔记-中断