OpenCV——边缘检测入门、Canny边缘检测
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; //Canny边缘检测的一般过程: //转成灰度图 //降噪 //用Canny算子(此时已经得到了边缘) //将边缘作为掩码,拷贝原图到效果图上,得到彩色的边缘 int main(int argc, char** argv) { Mat src = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\cat.jpg"); Mat src1 = src.clone(); imshow("原图", src); Mat dst, edge, gray; //初始化输出图 dst.create(src1.size(), src1.type()); dst = Scalar::all(0); //转成灰度图 cvtColor(src1, gray, COLOR_BGR2GRAY); //均值滤波降噪,也可以用其他滤波方法 blur(gray, edge, Size(3, 3)); //运行canny算子,得到边缘 Canny(edge, edge, 3, 9, 3); //掩膜的存在使得只有边缘部分被copy,得到彩色的边缘 src1.copyTo(dst, edge); imshow("效果图", dst); waitKey(0); return 0; }
边缘检测的相关原理和步骤