使用ZBar获取条形码的边界框

时间:2016-05-16 13:01:01

标签: c++ zbar

如何在ZBar中获取给定矩形的边界框?

目前我使用此代码从location polygon计算出来:

for(Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) {
    int pointsCount = symbol->get_location_size();
    for (int ii = 0; ii < pointsCount; ++ii) {
        int x = symbol->get_location_x(ii);
        int y = symbol->get_location_y(ii);
        if (!ii) {
            r.left = r.right = x;
            r.top = r.bottom = y;
        }
        r.left = std::min(r.left, x);
        r.right = std::max(r.right, x);
        r.top = std::min(r.top, y);
        r.bottom = std::max(r.bottom, y);
    }
    printf("rect(%d,%d,%d,%d), ", r.left, r.top, r.right, r.bottom);
}

这适用于某些条形码,但我有一个特定的图像,ZBar正确识别条形码文本 - 它&#34;检查&#34; - 但返回10个点作为位于条形码右侧角落的位置多边形

这里看起来是如何形象化的(我将这些点画成圆圈):

enter image description here

我在这里做错了吗?计算条形码边界框的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

帖子中的文档链接说:“这当前不是多边形,而是解码符号的扫描位置”。查看one of their example images,它看起来与您的情况类似 - 它似乎根本不是边界,而是与提取算法确定符号已成功解码的位置相关的点集合。从文档中看,你似乎运气不好,因为没有其他功能可以获得几何数据。

虽然你的SO问题没有得到任何有用的答案,但你可能想在他们的网站上试试support links