功能:
cvLaplace 是计算图像的 Laplacian 变换 ,是Intel开源项目opencv中的函数
函数形式:
void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
参数列表:
Src 输入图像.
Dst 输出图像.
aperture_size算子内核大小(滤波计算矩阵的大小默认为3)可以是1、3、5、7
注释:源图像src既可以是8位(无符号)图像,也可以是32位(浮点)图像
目标图像src必须是16位(有符号)或者32位(浮点)图像
program cv_Laplace;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
ocv.highgui_c,
ocv.core_c,
ocv.core.types_c,
ocv.imgproc_c,
uResourcePaths;
const
filename = cResourceMedia + 'cat2.jpg';
var
image: pIplImage = Nil;
dst: pIplImage = Nil;
dst2: pIplImage = Nil;
aperture: Integer = 3;
begin
try
// 尝试加载图像文件
image := cvLoadImage(filename);
WriteLn(Format('[i] 图像: %s', [filename]));
// 创建目标图像
dst := cvCreateImage(cvGetSize(image), IPL_DEPTH_16S, image^.nChannels);
dst2 := cvCreateImage(cvGetSize(image), image^.depth, image^.nChannels);
// 创建两个窗口,一个显示原始图像,一个显示 Laplace 变换后的图像
cvNamedWindow('原始图像', CV_WINDOW_AUTOSIZE);
cvNamedWindow('cvLaplace8b', CV_WINDOW_AUTOSIZE);
// 对图像进行 Laplace 变换
cvLaplace(image, dst, aperture);
// 将16位图像转换为8位图像以显示
cvConvertScale(dst, dst2);
// 在窗口中显示原始图像和 Laplace 变换后的图像
cvShowImage('原始图像', image);
cvShowImage('cvLaplace8b', dst2);
// 等待按键
cvWaitKey(0);
// 释放图像内存
cvReleaseImage(image);
cvReleaseImage(dst);
cvReleaseImage(dst2);
// 销毁所有窗口
cvDestroyAllWindows();
except
on E: Exception do
WriteLn(E.ClassName, ': ', E.Message);
end;
end.