'''
[Canny](https://baike.baidu.com/item/canny%E7%AE%97%E6%B3%95/8439208?fr=aladdin)边缘检测算法可以分为以下5个步骤:
1.应用高斯滤波来平滑图像,目的是去除噪声
2.找寻图像的强度梯度(intensity gradients)
3.应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)
4.应用双阈值的方法来决定可能的(潜在的)边界
5.利用滞后技术来跟踪边界
'''
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('messi.jpg',0)
edges = cv.Canny(img,100,100)
edges1 = cv.Canny(img,100,200)
edges2 = cv.Canny(img,100,300)
edges3 = cv.Canny(img,200,100)
edges4 = cv.Canny(img,300,100)
edges5 = cv.Canny(img,300,300)
plt.subplot(231),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(232),plt.imshow(edges,cmap = 'gray')
plt.title('Edge 100x100'), plt.xticks([]), plt.yticks([])
plt.subplot(233),plt.imshow(edges1,cmap = 'gray')
plt.title('Edge 100x200'), plt.xticks([]), plt.yticks([])
plt.subplot(234),plt.imshow(edges2,cmap = 'gray')
plt.title('Edge 100x300'), plt.xticks([]), plt.yticks([])
plt.subplot(235),plt.imshow(edges3,cmap = 'gray')
plt.title('Edge 200x100'), plt.xticks([]), plt.yticks([])
plt.subplot(236),plt.imshow(edges4,cmap = 'gray')
plt.title('Edge 300x100'), plt.xticks([]), plt.yticks([])
plt.show()
OpenCV学习14-Canny边缘检测
最新推荐文章于 2025-05-29 00:00:00 发布