天天看点

Opencv学习随笔(c++)-Canny算子边缘检测

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

Opencv学习随笔(c++)-Canny算子边缘检测

<2>效果图:  

Opencv学习随笔(c++)-Canny算子边缘检测