我想通过OpenCV的Android应用程序检测食品包装上的一些营养成分。 到目前为止,我设法用营养表的一张图片来做,但当然它只适用于这个。
目标是检测和检索100克产品的能量,蛋白质和糖类的价值。这些信息几乎存在于每个表格中,这就是我暂时只关注它们的原因。
所以我想知道是否有一个好方法可以这样做?目前,我尝试检测每个文本块,用Tesseract识别它,如果它符合我正在寻找的单词,我得到图片中相应的列和行,最终得到我想要的值。 / p>
有没有办法直接跟踪单词,并获得最适合图像的值(就“100g”列的对齐而言)。
典型图片:hpics.li/4231f79
很抱歉,如果我的问题没有得到很好的解释,只要问一下是否有什么不清楚,如果你想让我解释一下我目前所做的事情。也很抱歉我的英文
干杯
答案 0 :(得分:0)
只是一些想法:
1.将图像转换为HSV色彩空间,仅查看黑色和白色区域(使用inRange功能)。只包含这两种颜色的Blob可能就是你的信息(但不幸的是其他一些东西 - 条形码,也许是一些图画或标识)。
2你的区域应该是矩形,所以如果blob不是矩形 - 丢弃它。
3.如果已创建矩形,则使用affineTransform函数将其垂直对齐 - here我已解释了如何执行此操作。请注意,矩形宽度和高度应保持不变
4.使用仿射变换后,您的矩形可能会旋转90度,180度或270度。在顶部提供的示例中,有一个黑色区域 - 对于所有图像都是如此,比查找顶部非常简单 - 只需在您所在区域内找到黑色矩形。在其他情况下,查找顶部可能更难 - 一个快速的想法,可能值得测试的是在每个白色矩形中寻找黑色像素。在大多数情况下,对齐到中心(对我们来说不是有趣的情况)或向左 - 如果你发现左边是矩形,找到顶部是显而易见的:)或者你可以寻找总是在右边的字符 - {{ 1}},%
和g
如果你有任何问题,请给我们更多的例子并描述你已经做过的事情 - 你知道很难说出更多的事情。