#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
//******************************************
//
//******************************************
int main()
{
Mat src = imread("C:/Users/hasee-pc/Desktop/girl.jpg");
Mat src1 = src.clone();
imshow("【原始图】Canny边缘检测", src);
Mat dst, edge, gray;
//创建与src同样大小的矩阵
dst.create(src1.size(), src1.type());
//原图转换灰度图
cvtColor(src1, gray, COLOR_RGB2GRAY);
//3x3内核降噪
blur(gray, edge, Size(3,3));
//canny算子
Canny(edge,//原图 单通道b位
edge,//输出边缘图
3,//滞后性阈值
9, //滞后性阈值
3//sobel 算子
//bool 类型L2gradient 计算图像梯度幅值标识,有默认值
);
//所有元素设置为0
dst = Scalar::all(0);
//将边缘图作为源码,将src拷贝到dst中
src1.copyTo(dst, edge);
imshow("【效果图】Canny边缘检测", dst);
waitKey(0);
}