2017-05-29 2 views
2

今のところ、Android VisionがQRコードを検出すると、コードのコーナーポイントを含む配列 "Barcode.cornerPoints"が一見無作為な順番で配置されます。私は、4つのコーナーポイントのうち3つのポイントに "方位の四角"が含まれているかを判断する必要があります。QRコードの方向コーナー

私が使用している現在のアプローチは非常に不満足である:すべての検出されたQRコードの場合

  1. 、私は、ビットマップを作成し、別のライブラリ(Zxing)で再度QRコードを見つけようとすることを強制していますそれは常に回転に関して一貫した順序でコーナー点を返す。

  2. ZxingがQRコード(悲しいことに5回のうち約4回は起こらない)を見つけたら、Zxing-cornerをAndroid Visionのコーナーとクロスチェックして一致させる必要があります。

オリエンテーションに関して「Barcode.cornerPoints」という配列を作成することをお勧めします。私は今しばらく帖のために、この問題への巧妙な回避策を見つけようとしてきたが、私は何か良い解決策を考え出すことはできません

cornerPoints[0] = //First corner-point with an orientation square 
cornerPoints[1] = //Second corner-point with an orientation square 
cornerPoints[2] = //Third corner-point with an orientation square 
cornerPoints[3] = //The corner-point that does not contain a orientation square 

> Like in this picture <

、例えば:と明確にするため

それは私がそれを拡張することはできませんので、私はそれを拡張することはできません...

何か助けがありますか?

https://github.com/googlesamples/android-vision/issues/103

+1

なぜ方形が必要ですか?私の推測では、バーコードのコンテンツを取得するための「Vision API」は機能検出ではないということです。あなたはOpenCVを見ましたか? –

+0

1)コードを読んだあと、qrコードの右にいくつかのトリミングと画像編集を行うため、周囲との相対的なqrコードの向きを知る必要があります。コーナーの向きを知らなければ、どのエリアがqrコードの右側にあるのかを知ることは不可能です。 2)おそらく、Android Visionは、cornerPoints配列の任意の母集団を除いて、私のすべてのニーズを完全に満たしています。一貫して配列に移入するだけであれば、多くのアプリケーションでqrコードを方位アンカーとして使用できます。 3)いいえ、私はOpenCVをまだ見ていません – kpptron

答えて

0

私も似たような状況にいる:私は、この問題の解決策を探しているだけではありませんよ。 Android Visionがcorner points in a completely random orderを返さないことがわかります。

私は、検出器がフレームの左上から右下に画像をスキャンすると信じています。画像内で最初に検出されるQRコードコーナーは、コーナー0として返され、残りは時計回り方向に返されます。

本当に役立つのは、Android Visionが向きに応じて静的な順序であなたのようにコーナーを返す場合でした。私はコーナーポイントを返す選択された方法の理由をほとんど見ない。たぶんパフォーマンスが良いでしょうか? QRコードを読み取るためには、QRコードのコーナーによって決定される特定の向きに従って行わなければならない。つまり、Android Visionは既にオリエンテーションとコーナーを特定していますが、この情報は私たちには与えられていません。 これは将来のアップデートで追加される可能性がありますか?