0

扫描的图像包含 96 个条形码。下面有一个例子。

要读取条形码,我使用来自 inliteresearch.com 的库。

如果图像中缺少一个或多个条码(即它包含的条码少于96个,也就是说,有一个空格而不是条码),我如何连续读取条码并在图像中不存在条码时返回null ?

示例:缺少条形码 65。返回从 1 到 64 的所有条形码值,然后返回 65 的空值,然后返回 66 到 96 的值。

图像示例

4

2 回答 2

1

图像的水平和垂直投影(沿行或列的像素值总和)清楚地告诉您代码行的位置。

在此处输入图像描述

那么找到包含单个代码的 ROI 是一件简单的事情。


如果您有代码中心的坐标,您可以将它们按如下方式分组:通过增加 X 进行排序,然后计算增量。然后按递减值对增量进行排序。最大的增量告诉你在哪里用垂直线分割,并给你一个间距的估计。

于 2016-03-17T10:30:17.243 回答
0

如果 DMC 的位置和大小已知,则使用 ROIS(评估固定位置的子图像)。然后将您的 DMC 阅读器的结果放入一个数组中。

要找到未知排列/位置的 DMC,您可以在膨胀后对 blob 进行计数(膨胀二值图像或对灰度图像应用最大过滤器)按位置或您想要的任何顺序对检测到的 blob 坐标进行排序。然后使用收集的位置获取相应的子图像以进行 DMC 读取。

正确的DMC读库提供一次读取多个代码和读取后的DMC位置。如果是这样,您可以按位置对 DMC 进行排序并检查是否存在任何间隙。

于 2016-03-17T10:17:00.537 回答