2016-05-16 11 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を試してみたいことがあります。

関連する問題