//添加頭檔案
#include<opencv2/core/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main ()
{
//載入原圖
Mat lenna=imread("lenna.jpg");
//建立一個與原圖大小相同,類型相同的舉矩陣(dst)
Mat dst;
dst.create(lenna.size(),lenna.type());
//顯示原圖
imshow("【原圖】Canny邊緣檢測",lenna);
//預定義
Mat edge,In_grayimg,Out_grayimg;
//原圖轉換為灰階圖(opencv3.0)
cvtColor(lenna,In_grayimg,COLOR_BGR2GRAY);
//均值濾波降噪
blur(In_grayimg,Out_grayimg,Size(3,3));
//顯示原圖的灰階圖
imshow("【灰階圖】Canny邊緣檢測",Out_grayimg);
//Canny邊緣檢測
Canny(Out_grayimg,edge,15,100,3);
//将dst内的所有元素都置為0(不要忘了)
dst = Scalar::all(0);
//使用Canny算子輸出的邊緣圖edge作為掩碼,來将原圖lenna拷貝到目标圖dst中
lenna.copyTo(dst,edge);
//顯示效果圖
imshow("【效果圖】模糊操作Canny邊緣檢測",dst);
//将結果儲存至VS工程目錄下
imwrite("【效果圖】模糊操作Canny邊緣檢測.jpg",dst);
waitKey(0);
return 0;
}
<1>原圖:

<2>效果圖: