void cvLaplace(const CvArr * src,CvArr * det , int apertureSize=3)
该函数通常把原图像和目标图像以及中孔大小作为变量。
原图像可以是8位(无符号)图像,也可以是32位(浮点)图像。而目标图像必须是16位(有符号)或者32位(浮点)图像。
这里的中孔与Sobel导数中出现的中孔完全一样。
拉普拉斯算子通常可用于各种情况。一个通常的应用是检测“团块”。
拉普拉斯算子的形式是沿着x轴和y轴的二次导数的和,这就意味着周围是更高值的单点或者小块(比中孔小)会将使这个函数值最大化。反过来说,周围是更低值的点将会使函数的负值最大化。此外拉普拉斯算子也可以用于边缘检测。
下面一《学习OpenCV》第六章第六题为例进行应用说明:
6、找到并载入一幅正面人脸图像,眼睛是睁开的,并且占了图像的大部分区域,写出代码找出眼睛的瞳孔:
int main(int argc, const char * argv[]) {
/*1、加载一幅灰度图像*/
const char filename[] = "/Users/linwang/Downloads/girl.jpeg";
IplImage * Img = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);
/*2、缩小一倍*/
IplImage *out = cvCreateImage(cvSize(Img->width/2,Img->height/2), Img->depth, Img->nChannels);