opencv之边缘检测

opencv之边缘检测

// 边缘检测-canddy.cpp : 定义控制台应用程序的入口点。

//

 

#include “stdafx.h”

 

 

/**************************************************

* C++ Canny:Canny边缘检测

**************************************************/

 

/***********************************************************************

* OpenCV example

* By Min Qi February 26, 2012, Indianapolis, IN

***********************************************************************/

 

#include <opencv2/opencv.hpp>

#include <opencv/cv.h>

 

using namespace cv;

//#include “opencv2\highgui\highgui.hpp”

 

using namespace cv;

using namespace std;

 

int edgeThresh = 1;

 

// 声明 原始图片,灰度图片,和 canny边缘图片

Mat image, cedge;

Mat gray, edge;

 

void onTrackbar(int, void*)

{

//blur 灰度图片

blur(gray, edge, Size(3,3));

 

// Canny 边缘检测

Canny(gray,edge, edgeThresh, edgeThresh*3, 3);

 

//全部设为0

cedge = Scalar::all(0);

 

//拷贝边缘的象素点

image.copyTo(cedge, edge);

 

imshow(“Edge map”, edge);

 

}

 

int main(int argc, char** argv)

{

 

 

// 载入图片

//image = imread(argv[1], 1);

image = imread(“test.jpg”, 1);

 

// 判断载入图片是否成功

if(image.empty())

{

printf(“miss the image file: %d \n”, argv[1]);

return -1;

}

 

// 生成灰度图片,因为只有灰度图片才能生成边缘图片

cedge.create(image.size(), image.type());

cvtColor(image,gray, CV_BGR2GRAY);

 

//新建一个窗口

namedWindow(“Edge map”, 1);

 

// 生成一个进度条来控制边缘检测

createTrackbar(“Canny Threshold”, “Edge map”, &edgeThresh, 100, onTrackbar);

 

//初始化图像

onTrackbar(0,0);

 

waitKey(0);

 

return 0;

}

 

Leave a Reply