import cv2
def nothing(x):
pass
cv2.namedWindow('canny')
cv2.createTrackbar('maxVal','canny',0,255,nothing)
cv2.createTrackbar('minVal','canny',0,255,nothing)
img = cv2.imread('1.jpg',0)
while cv2.waitKey(1)!=27:
maxVal = cv2.getTrackbarPos('maxVal','canny')
minVal = cv2.getTrackbarPos('minVal','canny')
# 第一步是使用 5x5 的高斯滤波器去除噪声
# 第二步计算图像梯度:sobel
# 第三步非极大值抑制:
# 对整幅图像做一个扫描,去除那些非边界上的点
# 对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的
# 第四步滞后阈值
# 要确定那些边界才是真正的边界
# 这时我们需要设置两个阈值:minVal 和 maxVal
# 当图像的灰度梯度高于 maxVal 时被认为是真的边界,那些低于 minVal 的边界会被抛弃
# 如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连
# 如果是就认为它也是边界点,如果不是就抛弃
# 第一个参数是输入图像
# 第二和第三个分别是 minVal 和 maxVal(minVal,maxVal谁大谁小结果一样)
# 第三个参数设置用来计算图像梯度的 Sobel
# 卷积核的大小,默认值为 3
# 最后一个参数是 L2gradient,用来设定求梯度大小的方程
edge = cv2.Canny(img,minVal,maxVal)
cv2.imshow('canny',edge)
cv2.destroyAllWindows()
OpenCV边界检测cv2.Canny
猜你喜欢
转载自blog.csdn.net/weixin_42764391/article/details/89163629
今日推荐
周排行