バーコードスキャン用のGoogleVisionAPIの深い雑草に自分自身を見つけたようです。あらゆる種類の代替ライブラリ(ZBar、ZXing、さらには有料のサードパーティの実装)を見た後、私の心は少し不安になっているかもしれませんが、ある種のスキャンを実装できる場所に関する情報を見つけるのに苦労しています領域制限。
ユースケースは非常に単純なものです。同じタイプの複数のバーコードが付いたボックスにスマートフォンを向けるユーザーの場合(ここでは配送ラベルを考えてください)、小さなファインダーまたは直定規を明示的に向けたいと思います。関心のある領域以外のことを心配することなく、キャプチャしようとしているものを正確に画面に表示して、不要なスキャン結果を表示します。
上記のケースは、私が見た他のほとんどのAndroidライブラリで処理され、相対座標または絶対座標のRectを取り込んでいます。これは、iOSのAVCaptureメタデータ結果システムの一部でもあります(相対CGRectを使用しますが、実際には同じ概念です)。
バーコードリーダーのサンプルアプリをかなり深く掘り下げました ここ ですが、実装は、高レベルの実装の詳細以外のものを理解するのに少し不透明です。
カメラのプレビューフレーム内のどこかでバーコードが正常に検出された場合、デバイスがまだそれらのフレームを計算するために懸命に働いているため、関心のある領域外のバーコードを単純にノーオペレーションするのは醜いパッチのようです。
私はこれについて非常に単純で明白な何かを見逃していますか?そうでなければ、これをきれいに実装する方法についてのアイデアはありますか?
これを読んでくれてありがとう!
APIには現在、検出領域を制限するオプションがありません。ただし、プレビュー画像をバーコード検出器に渡す前にトリミングすることはできます。検出器を独自のクラスでラップする方法の概要については、こちらをご覧ください。
Mobile Vision API-新しい検出器オブジェクトを連結してフレーム処理を続行します
「detect」メソッドを実装して、カメラから受信したフレームを取得し、フレームのトリミングバージョンを作成して、それを基になる検出器に渡します。