zbar 的条码预处理

Barcode pre-processing for zbar

我正在使用 raspberry pi 相机从图像中读取条形码,并且在我的应用程序中对象需要离相机相对远。处理前的条码:

Zbar 无法解码这张图片的任何内容,我决定尝试手动编辑图片以使其解码。在条形码的单行之间绘制清晰的白线并更改图像的对比度后,ZBar解码结果为:

如何以编程方式从第一张图像转到第二张图像(我现在正在使用 OpenCV 和 python)?

尝试对其进行阈值处理。

首先将其转换为灰度,然后通过反复试验尝试获得 0-255 之间的最佳可能值,并将所有高于所选值的像素标记为白色,所有低于所选值的像素标记为黑色。

如果它不起作用,则输入图像需要更清晰。

(不确定 zbar 库是否已经这样做了)

问题很简单,考虑到最暗的区域是黑色,任何灰色区域都需要转换为白色。尝试计算图像的平均强度。

cv::标量 avgPixelIntensity = cv::mean( 图像 );

用这个值作为阈值,就可以做图像阈值了。这将是相当快的。

您也可以尝试 Otsu Thresholding,这是一种自适应阈值技术。这将比上述方法慢,但在图像具有其他人工制品(例如阴影)的情况下会提供更好的结果。

看这里:Image Thresholding Opencv.