#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat srcImage = imread("D://Visual studio//2020-10//Image algorithm//test.jpg");//载入原图
cout << srcImage.type() << "\n"; //查看srcImage的数据类型,这里输出代码16,详情参见Mat类型的命名规则
cout << srcImage.size() << "\n"; //输出srcImage的大小
imshow("【原图】", srcImage); //显示原图
Mat cache1; //下面三行与代码无关,就是验证一下:
cache1.create(srcImage.size(), 22); //这里创建cache1,同时指定器大小和类型,这里类型为22
cout << cache1.type() << "\n"; //输出其类型,结果为22,即表明可以通过数据类型代码指定其类型
//也可以通过某个Mat的类型指定,比如srcImage.type()
Mat dstImage, edge, grayImage;
dstImage.create(srcImage.size(), srcImage.type()); //【1】创建与原图同类型和大小的矩阵dst
cvtColor(srcImage, grayImage, COLOR_BGR2GRAY); //【2】将原图像转换成灰度图像
imshow("灰度图", grayImage);
blur(grayImage, edge, Size(3, 3)); //【3】先使用3*3内核来降噪
Canny(edge, edge, 3, 9, 3); //【4】运行Canny算子
imshow("【效果图】Canny边缘检测", edge); //显示效果图
waitKey(0);
return 0;
}