【OpenCV学习笔记】十九、图像边缘检测

图像边缘检测
【【OpenCV学习笔记】十九、图像边缘检测】Canny边缘检测——Canny()

Sobel边缘检测——Sobel()

Laplacian边缘检测——Laplacian()

先上ppt:
【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片




【OpenCV学习笔记】十九、图像边缘检测
文章图片


代码:

#include "opencv2/opencv.hpp"using namespace cv; void main() { ///Canny边缘检测 /*Mat srcImg = imread("1.bmp", CV_LOAD_IMAGE_COLOR); imshow("src", srcImg); Mat dstImg; Canny(srcImg, dstImg, 30, 80); imshow("Canny", dstImg); waitKey(0); */ /Sobel边缘检测 //Mat grad_x, grad_y; //Mat abs_grad_x, abs_grad_y, dst; //Mat src = https://www.it610.com/article/imread("2.png", CV_LOAD_IMAGE_COLOR); //imshow("src", src); //Sobel(src, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT); //因为Sobel求出来的结果有正负,8位无符号表示不全,故用16位有符号表示 //convertScaleAbs(grad_x, abs_grad_x); //将16位有符号转化为8位无符号 //imshow("X方向", abs_grad_x); //Sobel(src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT); //convertScaleAbs(grad_y, abs_grad_y); //imshow("Y方向", abs_grad_y); //addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst); //imshow("合并效果", dst); //waitKey(0); //destroyAllWindows(); ///Laplacian边缘检测 Mat grad_x, grad_y; Mat abs_grad_x, abs_grad_y, dst; Mat abs_dst; Mat src = https://www.it610.com/article/imread("1.bmp", CV_LOAD_IMAGE_GRAYSCALE); imshow("src", src); Laplacian(src, dst, CV_16S, 5, 1, 0, BORDER_DEFAULT); convertScaleAbs(dst, abs_dst); imshow("Laplacian", abs_dst); waitKey(0); destroyAllWindows(); }

运行结果:
Canny边缘检测:

【OpenCV学习笔记】十九、图像边缘检测
文章图片


【OpenCV学习笔记】十九、图像边缘检测
文章图片




Sobel边缘检测:

【OpenCV学习笔记】十九、图像边缘检测
文章图片


【OpenCV学习笔记】十九、图像边缘检测
文章图片




Laplacian边缘检测:



【OpenCV学习笔记】十九、图像边缘检测
文章图片









    推荐阅读