python+openCV使用滑动条调节阈值进行Canny边缘检测

Canny边缘检测一般流程

  • 高斯滤波,平滑图像,减弱噪声
  • 计算图像梯度大小和方向
  • 非极大值抑制,稀疏边缘
  • 滞后阈值(双阈值检测)

函数cv2.Canny(image, threshold1, threshold2[, apertureSize[, L2gradient]])

参数:

  • image:深度为8位的图像
  • threshold1:滞后阈值中的低阈值
  • threshold2:滞后阈值中的高阈值
  • apertureSize:Sobel边缘检测中的卷积框大小
  • L2gradient:精度设置,默认为False

返回值

单通道且图像深度为8位的图像,即灰度图像

e.g.

设置两个滑动条,分别控制threshold1,threshold2

import cv2
#载入图片
img_original=cv2.imread('E:\ImagesFavour\\5.2.3.jpg')
#设置窗口
cv2.namedWindow('Canny')
#定义回调函数
def nothing(x):
    pass
#创建两个滑动条,分别控制threshold1,threshold2
cv2.createTrackbar('threshold1','Canny',50,400,nothing)
cv2.createTrackbar('threshold2','Canny',100,400,nothing)
while(1):
    #返回滑动条所在位置的值
    threshold1=cv2.getTrackbarPos('threshold1','Canny')
    threshold2=cv2.getTrackbarPos('threshold2','Canny')
    #Canny边缘检测
    img_edges=cv2.Canny(img_original,threshold1,threshold2)
    #显示图片
    cv2.imshow('original',img_original)
    cv2.imshow('Canny',img_edges)  
    if cv2.waitKey(1)==ord('q'):
        break
cv2.destroyAllWindows()

结果显示如下:

python+openCV使用滑动条调节阈值进行Canny边缘检测_第1张图片

你可能感兴趣的:(openCV,python,Canny边缘检测)