Androidフォンからカメラを使用してvin番号バーコードを読み取るアプリケーションを構築しています.カメラからキャプチャされた画像からバーコードを読み取る方法がわかりません.(つまり)vin番号形式のバーコードを読み取るクラスはありますか? zxingや他のライブラリは私には役に立たないことを試しました。ありがとう
注: DDG.gg と Stackoverflow で検索してみましたが、適切な解決策はありません。
Androidフォンからカメラを使用してvin番号バーコードを読み取るアプリケーションを構築しています.カメラからキャプチャされた画像からバーコードを読み取る方法がわかりません.(つまり)vin番号形式のバーコードを読み取るクラスはありますか? zxingや他のライブラリは私には役に立たないことを試しました。ありがとう
注: DDG.gg と Stackoverflow で検索してみましたが、適切な解決策はありません。
グーグルコードのこのスレッドによると、zxingはそれをサポートする必要があります。彼らは、問題はカメラの解像度に関連している可能性があると言います。そして、彼らは「auqoniqVINスキャナー」について言及しています。これはzxingに基づくAndroidアプリのようです。
zxing のソース コードを使用して、有効な VIN 文字列にデコードし、意図的に VIN 文字列をバーコードにエンコードすることに成功しました (多少の助けを借りて)。
ここに鍵があります -
zxing ソース コードをライブラリとして統合します。ステップバイステップのリンクは次のとおりです。
ここでは、開発者の観点からこれを行うべきではない理由についての素晴らしい議論もありますが、コードは自由に使用でき、現在はインテントでは実行できない方法で変更する必要があります。それでは行きましょう。
プロジェクトで、意図を介して zxing を呼び出します (彼らが推奨するように)。特定intent.putExtra("SCAN_MODE","ONE_D_MODE");
私は実際に両方の方法で(この行の有無にかかわらず)動作させましたが、それを含めてより良い結果が得られるかどうかはあなた次第です. 私は通常、VIN がフレームに入ると、1/4 秒未満のフォーカスでスキャンする VIN を取得します。
カメラ プレビューは有効なバーコードを検索するためにフレームをデコーダに送信するため、プレビューの解像度は重要です。
だから... CameraConfigurationManager.javaで、より大きなMAX_PREVIEW_PIXELS
(画面の解像度を超えない)を指定します。デバイスの解像度である「1024 * 600」を使用しました。これには微調整が必要な場合があります。
CameraManager.java で、フレーミング長方形を編集して、より大きなバーコードのサイズに合わせて広げます private static final int MAX_FRAME_WIDTH = screenpixelsinteger;
。私のものは 1000 です。
では、 の代わりに(または) になるようpublic Rect getFramingRect() {
に編集int width
します。これにより、フレームの四角形が画面の解像度と同じ幅になりますが、上記で指定した幅よりも広くはなりません(MFW が低い場合は固定されます)。= screenResolution.x * 1
* nothing
* 3 / 4
MAX_FRAME_WIDTH
最後にスキャン!
他の変数を編集したとは思いませんが、これを機能させるために編集したことがわかった場合は、この回答を更新します。
zxing をライブラリとしてアプリに統合したところ、アプリで VIN を適切にスキャンしてデコードできるようになりました。マスクを変更して、使用可能なスキャン領域を広げました。
問題は間違いなくカメラの解像度です。滞りなく大規模でクリアな VINS スキャン。Dingy VINSはしません。
スキャンされない場合、VIN フィールドを手動で入力できるようにしています。有効な VIN であることを確認するために、必ずチェック ディジット メソッドを実行してください。
ここで使用できるものを見つけました: http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html