gpt4 book ai didi

c++ - 如何使用 OpenCV 从表中检测行和列

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:49 25 4
gpt4 key购买 nike

我有想法对表格进行行和列检测,即李克特量表检测。有关详细信息,请参阅此链接中的图片。 http://img.docstoccdn.com/thumb/orig/42750583.png

问题是:
我想在我的程序中将单元格内的值输入到二维数组中。如果有符号(任何类型)则值为 1,如果为空则值为 0。

注意:
第一行和第一列应该是标题和问题的位置仍然得到 1,我可以在稍后的过程中跳过第一行和第一列。

为此,我需要知道:

  1. 单元格中是否有符号
  2. 找出哪些行和列,以便我可以正确地放入我的二维数组。 (有则为 1,无则为 0)

本人初学OpenCV,只知道检测边界是否存在(一些预处理,轮廓检测,搜索approxPolyDP)。我读过这篇文章How to remove convexity defects in a Sudoku square?但是,我仍然不知道我必须做什么..

最佳答案

当输入图像与您的示例图像相似时,为了方便起见,我不会使用 Hough transform .

在下文中,我提出了一种检测线条的简单方法。此方法仅在您的输入图像与示例图像相似时才有效,即线条平行于图像边界。

  1. 计算每行的黑色像素和每列的黑色像素(或强度 > 0.5)
  2. 搜索至少包含一定数量黑色像素的每一行和每一列。因此,使用阈值 t1
  3. 考虑以下条件。两行(和两列)之间的距离应至少为 t2

此后,您应该有单行和单列。只剩下一个问题(如果它对您来说是个问题)。代表列的线不是连续的。因此,您可以通过测量列线的长度来检测表格之间的间隙。

检测到细胞后,您可以测量每个细胞内的像素并确定正确的细胞。

关于c++ - 如何使用 OpenCV 从表中检测行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501092/

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