Python 使用cv2.canny 识别不到边缘

问题:使用cv2.canny 无法提取到手指图像边缘。

解决:

1、查看cv2.canny定义如下:

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 

其中,参数含义如下:

image:要进行边缘检测的输入图像,可以是灰度图像或彩色图像。

threshold1:第一个阈值,用于边缘检测中的滞后阈值,建议取值为100。

threshold2:第二个阈值,用于边缘检测中的滞后阈值,建议取值为200。

edges:可选参数,用于存储边缘检测的结果。如果指定了该参数,则该参数会被用来存储检测到的边缘图像。如果没有指定该参数,则函数会自动创建一个与输入图像相同大小的数组来存储检测到的边缘图像。

apertureSize:可选参数,用于指定Sobel算子的大小,建议取值为3。

L2gradient:可选参数,用于指定是否使用L 2 梯度计算方式。默认值为False,表示使用L1梯度计算方式。

2、我使用的代码如下:

img_canny=cv.Canny(img,100,240)

3、得到的结果如下:

明明很明显的边缘为啥检测的只有一边呢?查看定义后我判断可能是阈值出现了问题。

4、查看图像像素

 

如上图所示,我发现我的图像分界处的阈值相差不大,甚至整个图像最大的阈值也不过在80左右。于是我猜测是高阈值设置出了问题。

5、重新调整阈值

img_canny=cv.Canny(img,70,80)

 经过这次的阈值调整终于得到了想要的结果,结果如下:

值得注意的是阈值设置也不能过低,否则会出现很出不必要的边缘。

 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值