#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <math.h>
int main(int argc, char** argv)
{
IplImage* src = cvLoadImage("./lena.jpg");
IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 );//注意,第一个参数必须是单通道,既可以是8位,也可是32位图像。
IplImage* color_dst = cvCreateImage(cvGetSize(src),32,1);//第二个参数必须是16位或者32位,我开始就犯了错误
cvCvtColor(src, dst, CV_BGR2GRAY);
cvLaplace(dst,color_dst,5);
cvNamedWindow( "Source", 1 );
cvShowImage( "Source", src );
cvNamedWindow( "Hough", 1 );
cvShowImage( "Hough", color_dst);
cvWaitKey(0);
return 0;
}
void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
至于第三个参数核的大小,越大你会发现线段越粗。
总体来说拉普拉斯变换求得是二次导数,图片看起来像是电视没有信号的时候的白色雪花。