/*cv19 by txwtech 一、laplance拉普拉斯算子_边缘检测
在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。 定义: void cv::Laplacian ( InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT ) 二、处理流程 1、高斯模糊——去噪声GaussianBlur() 2、转换为灰度图像cvtColor() 3、拉普拉斯——二阶导数计算Laplacian() 4、取绝对值convertScaleAbs() 5、二值化
*/
/*cv19
by txwtech
一、laplance拉普拉斯算子_边缘检测
在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。
定义:
void cv::Laplacian ( InputArray src,
OutputArray dst,
int ddepth,
int ksize = 1,
double scale = 1,
double delta = 0,
int borderType = BORDER_DEFAULT
)
二、处理流程
1、高斯模糊——去噪声GaussianBlur()
2、转换为灰度图像cvtColor()
3、拉普拉斯——二阶导数计算Laplacian()
4、取绝对值convertScaleAbs()
5、二值化
*/
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat src;
src = imread("e:\\pictures\\荷花1.jpg",CV_LOAD_IMAGE_COLOR);
if (!src.data)
{
printf("failed to load image");
}
namedWindow("原图",CV_WINDOW_AUTOSIZE);
imshow("原图",src);
Mat gray_src;
Mat dst;
Mat dst_edge_img;
//高斯模糊
GaussianBlur(src,dst,Size(3,3),0,0);
//转灰度图像
cvtColor(dst,gray_src,CV_BGR2GRAY);
//拉普拉斯变换
Laplacian(gray_src,dst_edge_img,CV_16S,3);
//计算图像A的像素绝对值
convertScaleAbs(dst_edge_img, dst_edge_img);
// 二值化处理
threshold(dst_edge_img, dst_edge_img,0,255,THRESH_OTSU|THRESH_BINARY);
imshow("拉普拉斯边缘检测",dst_edge_img);
waitKey(0);
return 0;
}