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