前言:这是this question的延续。
考虑以下来自here的代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('messi5.jpg',0)
edges = cv2.Canny(img,100,200) # Would 100 and 200 matter if your original image was black and white?
plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()
我的问题:
我问的原因:
最佳答案
阈值与无关。
假设使用3x3
Sobel过滤器(如Canny
所示),对于输入的二进制dx
图像,您可以获得的dy
和(0, 255)
的可能值为:
-1020, -765, -510, -255, 0, 255, 510, 765, 1020
可能的大小值为:
0, 510, 1020, 1530
。 0, 360.63, 510, 721.25, 806.38, 1020, 1081.87, 1140.40
因此,如果使用的话,您会从Canny获得不同的输出图像,例如
(minVal, maxVal)
作为(200,400)
或(400,600)
。如果使用相同间隔中的阈值(间隔的边界是上面显示的幅度值),那么您将始终获得相同的结果。
关于opencv - opencv canny:如果要处理黑白图像,minVal和maxVal是否重要?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35102372/