背景:我正在尝试创建一个软件来自动标记答卷。试卷格式固定,如下:
问题:为了检测用户交叉的框(A、B、C?),我需要根据 4 个黑色矩形裁剪或进行透视变换。如何检索上图中四个黑色矩形的坐标,最好使用OpenCV
?
附加信息:一旦我可以裁剪出答案框的药水,如下所示:
由于我知道每个框的确切尺寸,我可以比较每个框(A、B、C)中的黑色像素数,以检查用户越过哪个框。(假设用户不越过一个框)
欢迎所有建设性的建议。
背景:我正在尝试创建一个软件来自动标记答卷。试卷格式固定,如下:
问题:为了检测用户交叉的框(A、B、C?),我需要根据 4 个黑色矩形裁剪或进行透视变换。如何检索上图中四个黑色矩形的坐标,最好使用OpenCV
?
附加信息:一旦我可以裁剪出答案框的药水,如下所示:
由于我知道每个框的确切尺寸,我可以比较每个框(A、B、C)中的黑色像素数,以检查用户越过哪个框。(假设用户不越过一个框)
欢迎所有建设性的建议。
从外观上看,你的黑色方块似乎是页面上唯一真正黑色的东西,其余的看起来更亮。此外,您“有点”知道他们在哪里,或者至少在一般领域:他们有自己的专栏,上面或下面没有其他内容。因此,假设您的图像是“8 位灰度”,这就是我将如何在没有任何形状识别模块的情况下进行处理:
过滤特定值(5?10?50?)下的所有像素的图像,看看这是否足以过滤掉除正方形以外的所有内容。
然后将图像的模式切换为黑白(没有灰色,只有 1 位图)并反转它(黑色 - > 白色,白色 - > 黑色)
然后我会从左到右扫描图像的列。对于每一列,将所述列中的所有像素相加。只要结果为零,您还没有到那里。当总和开始为非空时,您已经找到了一个正方形。非零值列中的索引对应于正方形角之一(如果它位于列的上部或下部,您甚至可以分辨出哪个正方形)。如果你继续扫描,总和会增加。通过查看总和,您应该能够推断出每个方角的位置,即:总和变化的每个变化都是一个新的角。一大步:所有正方形完全对齐。4 个小步骤:对角线上的正方形。在几何上,除非纸张被撕裂或折叠,否则左角的正方形将立即显示,或按顺序显示(从上到下或从下到上)。从右到左重复。
总和的分析当然是最棘手的部分,但快速浏览 2 或 3 个示例会给您一个粗略的估计,您可以将其用于其他示例,例如:600 到 800 之间的总和 -> 本列中只有一个平方, 1200 和 1600 之间的总和 -> 两个平方等。当然,模式识别必须有更实用的解决方案,但那是作弊。