Laplacian函数:
函数功能:
对图像求二阶导数,一般用于边缘突出
Laplacian 算子 的定义:
函数调用形式:
void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT )
函数参数详解:
InputArray src:输入图像
OutputArray dst:输出图像
int ddepth:表示输出图像的深度
depth 图像元素的位深度,可以是下面的其中之一:
位深度 取值范围
IPL_DEPTH_8U - 无符号8位整型 0--255
IPL_DEPTH_8S - 有符号8位整型 -128--127
IPL_DEPTH_16U - 无符号16位整型 0--65535
IPL_DEPTH_16S - 有符号16位整型 -32768--32767
IPL_DEPTH_32S - 有符号32位整型 0--65535
IPL_DEPTH_32F - 单精度浮点数 0.0--1.0
IPL_DEPTH_64F - 双精度浮点数 0.0--1.0
int ksize=1:表示拉普拉斯核的大小,1表示核的大小是三:
When ksize == 1 , the Laplacian is computed by filtering the image with the following aperture:
double delta=0:表示是否在输出的像素中加上一个量
int borderType=BORDER_DEFAULT:表示处理边界的方式,一般默认
opencv代码:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include
#include
using namespace cv;
/** @函数 main */
int main( int argc, char** argv )
{
Mat src, src_gray, dst;
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
char* window_name = "Laplace Demo";
int c;
/// 装载图像
src = imread( argv[1] );
if( !src.data )
{ return -1; }
/// 使用高斯滤波消除噪声
GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );
/// 转换为灰度图
cvtColor( src, src_gray, CV_RGB2GRAY );
/// 创建显示窗口
namedWindow( window_name, CV_WINDOW_AUTOSIZE );
/// 使用Laplace函数
Mat abs_dst;
Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );
convertScaleAbs( dst, abs_dst );
/// 显示结果
imshow( window_name, abs_dst );
waitKey(0);
return 0;
}