Laplace算子
通过二阶导数计算,提取图像边缘
处理流程
高斯模糊—去噪声
转换为灰度图像cvtColor()
拉普拉斯—二阶导数计算Laplacian()
取绝对值convertScaleAbs()
显示结果
代码展示
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat src;
src = imread("F:/Opencvlearn/picture/2.jpg");
if (src.empty())
{
printf("could not load image...\n");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
Mat src_blur, blur_gray;
GaussianBlur(src, src_blur, Size(3, 3), 0, 0);
namedWindow("blur", WINDOW_AUTOSIZE);
imshow("blur", src_blur);
cvtColor(src_blur, blur_gray, COLOR_BGR2GRAY);
imshow("blur_gray", blur_gray);
Mat lap;
Laplacian(blur_gray, lap, CV_16S, 3, 1, 0); //拉普拉斯
imshow("laplace", lap);
convertScaleAbs(lap, lap);
imshow("Abs_lap", lap);
//阈值二值化
Mat dst;
threshold(lap, dst, 0, 255, THRESH_OTSU | THRESH_BINARY);
imshow("final", dst);
waitKey(0);
return 0;
}