边缘检测主要是识别图像中的色彩(亮度)显著变化的的区域,边缘检测的图像要求是单通道的图像。
边缘图
img=cv2.imread("../Resources/dog2.jpg")
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
canny=cv2.Canny(img_gray,100,200)
cv2.imshow("canny",canny)
cv2.waitKey(0)
对比下降噪后的边缘图
img=cv2.imread("../Resources/dog2.jpg")
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_blur = cv2.blur(img_gray, (4, 4))
canny=cv2.Canny(img_blur,100,200)
cv2.imshow("canny",canny)
cv2.waitKey(0)
可以看出做过模糊处理后,少了很多边界区域,建议将修改代码中的滤波的Size,通过修改均值滤波的内核大小,可以明显看出边缘线条的变化。也可以多尝试几种滤波方式看看对图像的影响有哪些不一样的地方。
|