边缘检测是图像处理和计算机视觉的基本问题,边缘检测的目的是识别数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要事件和变化.
这些包括:
(1)深度上的不连续
(2)表面方向的不连续
(3)物理属性变化和场景照明变化
边缘检测是图像处理和计算机视觉中,尤其是特征提取中的研究领域.
一. Canny边缘检测算法的处理流程
1 高斯模糊 -- GaossianBlur
2 灰度转换 --cvtColor
3 计算梯度 -- Sobel/Scharr
4 非最大信号抑制
5 高低阈值输出
canny 边缘检测原理介绍
https://www.cnblogs.com/techyan1990/p/7291771.html
三 代码实现
import cv2 as cv #边缘检测算法 def edge_image(image): blurred=cv.GaussianBlur(image,(3,3),0) #高斯平滑 gray=cv.cvtColor(blurred,cv.COLOR_BGR2GRAY) #分别求xy方向的梯度 xgrad=cv.Sobel(gray,cv.CV_16SC1,1,0)#x方向梯度 ygrad=cv.Sobel(gray,cv.CV_16SC1,0,1) #canny边缘检测 edge_output=cv.Canny(xgrad,ygrad,50,150) cv.imshow('cannybianyuan',edge_output) dst=cv.bitwise_and(image,image,mask=edge_output) cv.imshow('colorbianyuan',dst) src=cv.imread('ying.jpg') cv.imshow('before',src) edge_image(src) cv.waitKey(0) cv.destroyAllWindows()
效果展示