//添加头文件
#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>效果图: