天天看點

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算子邊緣檢測