简介
图像的距离变换被定义为一幅新的图像,该图像的每个输出像素被设成与输入像素中0像素最近的距离。显然,典型
的距离变换的输入应为某些边缘图像。在多数应用中,距离变换的输入是例如Canny 边缘检测的检测图像的转换输
出(即边缘的值是0,非边缘的是非0)。
#include<cv.h>
#include<highgui.h>
#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
int main()
{
IplImage* src = cvLoadImage ("test.png", 1);
IplImage* dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_32F, 1);
IplImage* canny = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 1);
cvCvtColor (src, canny, CV_RGB2GRAY);
cvCanny (canny, canny, 100, 200, 3);
cvDistTransform (canny, dst, CV_DIST_WELSCH, 3);
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
cvNamedWindow ("dist", 1);
cvShowImage ("dist", canny);
cvWaitKey (0);
cvReleaseImage (&src);
cvReleaseImage (&canny);
cvReleaseImage (&dst);
return 0;
}