您可以使用大津的方法来计算您的阈值
(Python)代码如下所示:
high_thresh, thresh_im = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh
0
您可以使用大津的方法来计算您的阈值
(Python)代码如下所示:
high_thresh, thresh_im = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh
0
使用我从THIS BLOG获得的以下代码段:
v = np.median(gray_image)
#---- apply automatic Canny edge detection using the computed median----
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))
edged = cv2.Canny(gray_image, lower, upper)
cv2.imshow('Edges',edged)
我正在使用灰度图像的中间值。选择0.33的sigma值可设置上下阈值。统计人员通常将0.33的值用于数据科学。因此,这里也考虑它。
0
我正在Android平台上使用openCV。在这个社区和技术人员的巨大帮助下,我能够成功地从图像中检测出一张纸。这些是我使用的步骤。
应用所有这些步骤之后,我可以轻松地从图像中获取文档或最大的矩形。但这很大程度上取决于背景和文档纸的强度差异。由于Canny edge按照强度梯度原理工作,因此始终会在实现方面假定强度差异。这就是Canny考虑各种阈值参数的原因。
因此,如果像素的强度梯度大于“较高阈值”,则它将作为边缘像素添加到输出图像中。如果像素的强度梯度值小于“下阈值”,则将完全拒绝该像素。并且,如果像素的强度介于阈值上限和下限之间,则仅当其连接到值大于“较高阈值”的任何其他像素时,才将其添加为边缘像素。
我的主要目的是使用Canny边缘检测进行文档扫描。因此,我想知道如何动态计算这些阈值,以便它可以适用于深色和浅色背景的两种情况。
我通过手动调整参数做了很多尝试,但是找不到与场景相关的任何关系。
希望我能阐明我的观点,并在此先感谢