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;

}

  边缘检测的相关原理和步骤

猜你喜欢

转载自www.cnblogs.com/fcfc940503/p/11282329.html