OpenCV学习14-Canny边缘检测

本文详细介绍了Canny边缘检测算法的五个核心步骤,包括高斯滤波、强度梯度计算、非最大抑制、双阈值确定及边界追踪,并通过Python OpenCV实现不同参数设置下的边缘检测效果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'''
[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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值