采用Canny算法做边缘检测
cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size CV_DEFAULT(3) );
image:单通道输入图像
edges:单通道存储边缘的输出图像
threshold1:第一个阈值
threshold2:第二个阈值
aperture_size :Sobel算子内核大小
函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。
需要注意的是,cvCanny只接受单通道图像作为输入。
下面是一个例子:
#include "cv.h"
#include "highgui.h"
IplImage *doCanny(
IplImage *in,
double lowThresh,
double highThresh,
double aperture)
{
if (in->nChannels != 1)
return(0); // Canny only handles gray scale images
IplImage *out = cvCreateImage(
cvGetSize( in ),
in->depth, //IPL_DEPTH_8U,
1);
cvCanny( in,