理论:
在二阶微分的时候,最大变化处的值为零即边缘是零值,通过二阶导数计算,依据理论我们可以计算出图像二阶导数,提取边缘。
处理流程:
高斯模糊-去噪声GaussianBlur()
转化为灰度图像cvtColor()
拉普拉斯-二阶导数计算Laplacian()
提取绝对值convertScaleAbs()
显示结果
代码:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc,char ** argv)
{
Mat src,gray_src,edge_img,dst;
src = imread("1.jpg");
namedWindow("input window",CV_WINDOW_AUTOSIZE);
imshow("input window",src);
GaussianBlur(src,dst,Size(3,3),0,0);
cvtColor(dst,gray_src,CV_BGR2GRAY);
Laplacian(gray_src,edge_img,CV_16S,3);
convertScaleAbs(edge_img,edge_img);
imshow("1",edge_img);
waitKey(0);
return 0;
}
效果:
github源码和图片下载地址:
https://github.com/MRwangmaomao/OpencvTestLaplace-Project.git