19 - Laplance算子 测试
代码 和理解注释:
#include<opencv2/opencv.hpp>;
using namespace cv;
int main(int argc, char* argv) { // 19 - Laplance算子
Mat source1, change1;
source1 = imread("F:\\OpenCV-Test\\TestPicture\\SourcePicture1\\1.PNG");
if (!source1.data) { printf("can not load image ... \n"); return -1; }
imshow("source1", source1);
Mat temp_image,source1Gray;
GaussianBlur(source1, temp_image, Size(3, 3), 0, 0);
cvtColor(temp_image, source1Gray, 6);
imshow("source1Gray", source1Gray);
Laplacian(source1Gray, change1, CV_16S, 3); //拉普拉斯算子
// (输入图像,输出图像,输出图像位图深度,卷积核)
//若某个位置像素差发生大的变化,可以认为这里是图像的一个边缘,求一阶导数得到中间的像素分布,
//而求二阶导时,在突变的地方有符号相反的2个数值,也即是对图像求二阶导数产生了一个像素宽的双边缘
convertScaleAbs(change1, change1); //将图像深度转为8位int
imshow("Laplacian", change1);
threshold(change1, change1, 0, 255, THRESH_OTSU | THRESH_BINARY);//二值化
imshow("result", change1);
waitKey(0);
return 0;
}
代码演示效果: