2016-05-16 65 views
5

如何獲得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和正確識別條形碼文字 - 它的「CHECK」 - 但返回10分作爲位置多邊形,它們都位於條形碼的右上角

下面是它看起來多麼可視化(我畫的點作爲圓):

enter image description here

我也是錯在這裏做什麼?計算條形碼邊界框的正確方法是什麼?

+0

您帖子中的文檔鏈接說:「這當前不是多邊形,而是符號被解碼的掃描位置」。看看[他們的示例圖像之一](https://sourceforge.net/p/zbar/screenshot/234713.jpg),它看起來與你的情況類似 - 看起來它不是一個邊界,而是一個集合與提取算法相關的點。看起來你運氣不好... – mindriot

+0

@mindriot由於賞金將會過期,你可以將它作爲答案嗎?這樣我可以獎賞你的賞金,你的回答是有效的,即使我運氣不好。 – sashoalm

+0

因爲我沒有真正設法提供_solution_,所以不要擔心獎金。 – mindriot

回答

3

您帖子中的文檔鏈接說:「這當前不是多邊形,而是符號被解碼的掃描位置」。看看one of their example images,它看起來與你的情況類似 - 它看起來不是邊界,而是與提取算法確定符號被成功解碼的位置相關的一組點。從文檔看來,你似乎運氣不佳,因爲沒有其他功能可以獲得幾何數據。

儘管您的SO問題沒有得到任何有用的答案,但您可能需要在其網站上嘗試support links