Canny边缘检测中滞后阈值的影响

在OpenCV教程的Canny边缘检测这一节的课后练习中,提出编写一个小应用研究滞后阈值对检测结果的影响,这里贴出我做的小应用。

import numpy as np
import cv2 as cv
def nothing(x):
    pass
# 读取图片,创建一个窗口
img = cv.imread('image\lena512.bmp',0)
cv.namedWindow('Canny edge')
# 创建两个跟踪条用于修改滞后阈值
cv.createTrackbar('minVal','Canny edge',125,255,nothing)
minVal = cv.getTrackbarPos('minVal','Canny edge')
cv.createTrackbar('maxVal','Canny edge',minVal,255,nothing)
# 创建开关功能
switch = '0 : OFF \n1 : ON'
cv.createTrackbar(switch, 'Canny edge',0,1,nothing)
while(1):
    k = cv.waitKey(1) & 0xFF
    if k == 27:
        break
    # 读取跟踪条表示的滞后阈值
    minVal = cv.getTrackbarPos('minVal','Canny edge')
    maxVal = cv.getTrackbarPos('maxVal','Canny edge')
    s = cv.getTrackbarPos(switch,'Canny edge')
    if s == 0:
        cv.imshow('Canny edge',img)
    else:
        edge = cv.Canny(img,minVal,maxVal)
        cv.imshow('Canny edge',edge)
cv.destroyAllWindows()

 结果如下所示

1、关闭边缘检测结果

Canny边缘检测中滞后阈值的影响_第1张图片

2、打开边缘检测结果

Canny边缘检测中滞后阈值的影响_第2张图片

3、修改滞后阈值结果

Canny边缘检测中滞后阈值的影响_第3张图片

可以看到,降低滞后阈值1,可以获得更多边界,细节越多,图片越丰富。

你可能感兴趣的:(图像处理)