携帯電話のカメラを使用してキャプチャされたバーコードをプログラムで読み取るにはどうすればよいですか?たとえば、iPhone、Android、またはJava MEを使用してそれをどのように行うのですか?バーコードを読み取るために別のハードウェアが必要ですか、それとも画像操作を行うことができますか?
6 に答える
Googleは、 Zebra Crossingライブラリを使用して、これを信じられないほどシンプルにしました。次のプラットフォームで画像を介してスキャンを実行するためのサポートがあります。
- J2SE
- アンドロイド
および他の人は以下に移植しました:
- J2ME
- Cシャープ
- CPP
- リム
- iPhone
- バグ
すでに述べたように、Androidでは、インテントを使用して次のようなバーコードリーダーを呼び出すこともできます。
public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "ONE_D_MODE");
startActivityForResult(intent, 0);
}
};
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
バーコードは、電話のカメラから取得した分析を通じて読み取ることができます。
よく知られている問題は、固定焦点カメラ(古い2G / 3G iPhoneや一部のAndroidなど)が短距離から焦点の合ったスナップショットを撮ることができないことです。これに対抗するには、特別な「デコンボリューション」アルゴリズムを使用する必要があります。前回チェックしたとき、これは横断歩道の一部ではありませんでした。
いくつかのソリューションが実装されています-固定焦点カメラでUPCを読み取ることができるiPhone用の次のアプリを知っています:pic2shop(Benoit Maison / Vision Smarts)、RedLaser(Occipital)、ShopSavvy(Big in Japan)-それらをチェックしてくださいそれらのすべてが、関心のあるサードパーティに利用可能なSDKを持っていると思います。
Androidの場合は非常に簡単です。バーコードスキャナーアプリが提供するサービスを利用するだけです(依存関係)。次に、バーコードスキャナーアプリがすべてのスキャン部分を処理し、コードを返すだけです。
他のプラットフォームでも同様のソリューションが利用できると思いますが、Androidでは、インテントアーキテクチャにより、さらに簡単になります。
ぼやけた画像のバーコードもデコードするソリューションを選択することをお勧めします。固定焦点カメラしかなく、上記のソフトウェアソリューションが提供するバイナリしきい値よりも高度な画像処理ソリューションを必要とするローエンドのAndroidフォンが数多くあります。このようなより高度なソリューションの例には、redlaserまたはScanditバーコードスキャナーSDKが含まれます。
Scandit SDKは統合が非常に簡単で、無料のコミュニティエディションが付属しています。バーコード番号を製品名に簡単に変換できる製品APIもあります。
免責事項:私はScanditの共同創設者の1人です。
明らかに、その画像からバーコードを読み取ることは可能です。あなたはおそらく次のような問題について考える必要があります
- オリエンテーション; おそらく写真は真っ直ぐではないので、バーは垂直ではありません。また、逆さまになっている可能性があります...
- 集中; ショットがぼやけている場合はどうなりますか?安全に解釈できなくなる限界があるのではないでしょうか。
- トリミング; フレーミングが悪く、コード全体が画像に含まれていない場合はどうなりますか?
これを解決する既存のプロジェクトや製品はたくさんあります...たとえば、これが1つです。一部のソリューションは、上記のようなポイントにあまり敏感ではないようですが、たとえば、画像内の向きや場所に関係なく、バーコードを見つけて認識できると主張しています。
この質問への回答を探しているすべての初心者への更新のために、Googleは現在GooglePlayサービスを介してバーコード検出APIを提供し、電話のカメラを使用してバーコードをスキャンすることを簡素化します。サードパーティのAPIに依存する必要はもうありません。