1.背景
阅读官方文档/手册,学习openCV的过程中遇到的练习题,记录一下。
1.编写一个小应用程序以找到Canny边缘检测,该检测的阈值可以使用两个跟踪栏进行更改。这样,你可以了解阈值的影响
2. 代码部分
不是很会用matplotlib来绘图,所以用利用OpenCV的窗口来完成了这个任务。
如果您有更好的办法,欢迎交流指正~
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
T = [100, 200]
img = cv.imread('messi5.jpg', 0)
plt.subplot(211), plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.yticks([]), plt.xticks([]), plt.yticks([])
def my_draw():
edges = cv.Canny(img, T[0], T[1])
plt.subplot(212), plt.imshow(edges, cmap='gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()
def p_t1(x):
T[0] = x
my_draw()
def p_t2(x):
T[1] = x
my_draw()
my_draw()
cv.namedWindow('console', cv.WINDOW_NORMAL)
cv.createTrackbar('threshold1', 'console', 0, 255, p_t1)
cv.createTrackbar('threshold2', 'console', 0, 255, p_t2)
in_key = cv.waitKey(1)
3. 演示效果
可以看到,阈值越高越严格。
在上阈值不变的情况下,下阈值越低,越容易判定成边界。