一.写在前面
Laplace就是求二阶导
在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶
导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。
Q二阶导数我不会
A别担心 ->拉普拉斯算子(Laplance operator);Opencv已经提供了相关API – cv::Laplance
二.处理流程
1高斯模糊 – 去噪声GaussianBlur()
2转换为灰度图像cvtColor()
3拉普拉斯 – 二阶导数计算Laplacian()
4取绝对值convertScaleAbs()
5显示结果
三.相关API
Laplacian(
InputArray src,
OutputArray dst,
int depth, //深度CV_16S
int kisze, // 3
double scale = 1,
double delta =0.0,
int borderType = 4
)
四.代码实现
/*
OpenCV Laplace算子学习
Michael Jiang<sencom1997@outlook.com>
2019年7月26日06:53:08
*/
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main()
{
Mat src, dst, gray, fin;
//读取图像
src = imread("D:/linus.jpg", IMREAD_COLOR);
//判断读取是否成功
if (src.empty()) {
printf("pic load failed!\n");
return -1;
}
imshow("src", src);
//高斯模糊
GaussianBlur(src, dst, Size(3, 3), 0, 0, BORDER_DEFAULT);
//转灰度
cvtColor(dst, gray, COLOR_BGR2GRAY);
//Laplace算子
Laplacian(gray, fin, CV_16S,3);
convertScaleAbs(fin, fin);
imshow("fin", fin);
waitKey(0);
return 0;
}