gpt4 book ai didi

opencv - 如何在 OpenCV 中实现的 Canny 边缘检测算法中选择最佳参数集?

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:52 25 4
gpt4 key购买 nike

我在 Android 平台上使用 OpenCV。在这个社区和技术人员的巨大帮助下,我能够成功地从图像中检测出一张纸。

这些是我使用的步骤。

  1. Imgproc.cvtColor()
  2. Imgproc.Canny()
  3. Imgproc.GausianBlur()
  4. Imgproc.findContours()
  5. Imgproc.approxPolyDP()
  6. 找到最大矩形()
  7. 找到矩形的顶点
  8. 使用质心法找到矩形左上角逆时针顺序的顶点
  9. 求矩形的高和宽只是为了保持纵横比,做warpPerspective变换。

应用所有这些步骤后,我可以轻松地从图像中获取文档或最大的矩形。但这在很大程度上取决于背景和文档页的强度差异。作为Canny edge detector根据强度梯度原理工作,始终从实现方面假设强度差异。这就是 Canny 考虑各种阈值参数的原因。

  1. 降低阈值
  2. 更高的阈值

所以如果一个像素的强度梯度大于更高的阈值,它将被添加为输出图像中的边缘像素。如果一个像素的强度梯度值低于下限阈值,则该像素将被完全拒绝。如果一个像素的强度介于较低阈值和较高阈值之间,则只有当它连接到值大于较高阈值的任何其他像素时,它才会被添加为边缘像素。

我的主要目的是使用 Canny 边缘检测进行文档扫描。那么我如何动态计算这些阈值,以便它可以同时处理深色和浅色背景?

我通过手动调整参数尝试了很多,但我找不到与场景相关的任何关系。

最佳答案

您可以使用 Otsu’s method 计算阈值.

(Python)代码看起来像这样:

high_thresh, thresh_im = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*high_thresh

关于opencv - 如何在 OpenCV 中实现的 Canny 边缘检测算法中选择最佳参数集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21324950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com