透视扭曲条形码的分割

Tob*_*ann 5 opencv barcode image-segmentation

有些图像中有透视扭曲的条形码.

在此输入图像描述

它们使用ZBar定位和解码.

zbar条形码位置

现在我不仅需要粗略的位置,而且需要条形码的四个真实角点,它们定义了封闭的4点多边形.

在此输入图像描述

我尝试了不同的方法,但还没有得到理想的结果.其中一个是:

  • 将图像转换为灰度
  • 阈值图像
  • 侵蚀图像
  • floodFill以一个已知为条形码一部分的像素开始
  • 获取floodFill结果周围的轮廓

但是在这个轮廓周围,我现在需要找到最小的最佳拟合4点多边形,这似乎并不那么容易.

你对更好的方法有什么想法吗?

Tob*_*ann 2

好的,我找到了一个足够适合我的用例的解决方案。

首先从 ZBar 结果生成扫描线。

扫描线

cv::adaptivethreshold现在,在足够大的图像版本中找到了第一个和最后一个黑色像素blockSize

第一个和最后一个黑色像素

从那里开始,第一个和最后一个栏使用 进行分段cv::findContours

第一个和最后一个小节

现在,对于两个端部钢筋,搜索彼此距离最远的两个轮廓点。

酒吧结束

他们最终定义了封闭的 4 点多边形。

四点聚

这并不完全是我在问题中发布的内容,但由于延长的防护图案而产生的额外尺寸在我的情况下并不重要。