Cara membaca beberapa kode qr dari satu gambar menggunakan perpustakaan zxing

Saat ini saya sedang mengembangkan pemindai yang membaca beberapa kode QR yang ditemukan dalam satu gambar. Saya berhasil membaca kode QR pada gambar tetapi hasilnya tidak konsisten. Dengan asumsi ada 4 kode QR pada gambar, terkadang saya dapat membaca 2 dan terkadang 3 atau hanya 1. Tidak seperti pemindai asli (ZXing Scanner), kode ini diterjemahkan dengan cepat. Sementara dalam kasus saya, saya harus memastikan ada cukup cahaya dan gambar tidak buram untuk memecahkan kodenya.

Saya menggunakan QRCodeMultiReader untuk memecahkan kode gambar. Saat ini menggunakan ZXing Library untuk membuat aplikasi.

Di bawah ini cuplikan kode saya:

public void onPictureTaken(byte[] data, Camera camera) {
   BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inMutable = true;
   Bitmap bitmap = BitmapFactory
            .decodeByteArray(data, 0, data.length, opt);
   Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
   hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
   LuminanceSource source = new RGBLuminanceSource(bitmap);

   QRCodeMultiReader multiReader = new QRCodeMultiReader();
   Result[] results = multiReader.decodeMultiple(new BinaryBitmap(
   new HybridBinarizer(source)), hints);
}

person She Smile GM    schedule 27.02.2013    source sumber
comment
sudahkah Anda menemukan solusi tepat untuk membaca banyak kode batang?/   -  person Ando Masahashi    schedule 23.06.2014
comment
sayangnya saya belum melakukannya karena kami menghentikan pengembangan untuk fitur tersebut. Tetapi saya akan terus mencari solusi untuk ini terutama karena saya kembali menggunakan Android.   -  person She Smile GM    schedule 24.06.2014
comment
oke bisakah Anda membagikan saya kode yang sudah Anda coba sebelumnya?   -  person Ando Masahashi    schedule 24.06.2014
comment
Saya baru saja menggunakan perpustakaan zxing dan mengatur kode saya untuk kamera. Saya baru saja mengikuti tutorial android dalam mengatur tampilan kamera di aktivitas utama. Saya tidak memiliki salinan kode yang berfungsi sekarang karena saya tidak lagi terhubung dengan klien yang meminta saya untuk melakukan fitur tersebut. Saya tidak menyimpan kode karena sudah menjadi milik klien.   -  person She Smile GM    schedule 25.06.2014
comment
@SheSmileGM Tolong bantu saya, saya mencari hal yang sama. Namun dalam kasus saya, hanya satu kode QR yang dibaca baik-baik saja karena semua kodenya sama. Silakan coba beri saya jawaban di sini: stackoverflow.com/questions/30767188/   -  person sam_k    schedule 12.06.2015
comment
Anda harus dapat menggunakan metode getResultPoints() dari hasil yang tersedia untuk menemukan lokasi dalam gambar asli yang cocok, dan menggunakannya untuk menghapus area gambar tersebut. Kemudian Anda dapat mengulangi langkah decoding hingga tidak ada lagi hasil yang ditemukan.   -  person Logan Pickup    schedule 01.08.2016


Jawaban (2)


saya telah membuat satu aplikasi untuk kamera saya telah menggunakan intent sebagai aplikasi Kamera default yang ada di setiap OS Android dan umumnya aplikasi tersebut lebih baik dioptimalkan untuk perangkat itu daripada menulis aplikasi Kamera umum yang akan dioptimalkan untuk ponsel Anda saja...jadi untuk kamera lebih baik gunakan intent.

Untuk Mengekstrak beberapa QR dari satu gambar saya mencoba kode di bawah ini.
Tetapi hasilnya tidak konsisten kadang saya mendapatkan 1 atau 2 atau 3 dari 4 kadang tidak ada....itu bukan solusi sempurna

if(photo == null) 
        return;
    Bitmap ScaledQr = null;
    ScaledQr = Bitmap.createScaledBitmap(photo, 640,480, false);
    BinaryBitmap Qr = BitMap2BinayBitmap(ScaledQr);
    Result [] kpResultMulti = null;
    Result kpResultSingle = null;
    Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
    hints.put(DecodeHintType.TRY_HARDER, true);
    //hints.put(DecodeHintType.PURE_BARCODE, true);

    try {
        kpResultMulti = kpReaderArr.decodeMultiple(Qr,hints);
    } catch (NotFoundException e) {
        // TODO Auto-generated catch block
        msbox("Exception","NotFoundException");
        e.printStackTrace();
    }

    if(kpResultMulti != null){
        msbox("Total Result" ,kpResultMulti.length +"");// + photo.getWidth() +     "Height=" + photo.getHeight());
        for(Result kp : kpResultMulti)
        {

            msbox("Results",kp.getText());
        }
    }
person user2801456    schedule 21.09.2013

Halo silakan periksa di aplikasi Zxing Barcode Scanner yang memiliki opsi di Pengaturan untuk Memindai Kode Batang Massal sehingga Anda mengaktifkannya dan memeriksanya Anda dapat membaca Beberapa kode QR sekaligus dari satu atau lebih Gambar dan juga memeriksa kode Sumber perpustakaan Zxing untuk Diketahui Informasi rinci.

https://code.google.com/p/zxing/

person androidgeek    schedule 27.02.2013
comment
tidak menyadari bahwa saya dapat mengubah pengaturan untuk memindai banyak kode di pemindai zxing, terima kasih untuk itu. Akan men-debug lagi kode sumber pemindai zxing. - person She Smile GM; 27.02.2013
comment
Pemindaian Massal tidak ada hubungannya dengan membaca beberapa barcode sekaligus, tetapi membaca beberapa barcode secara berurutan. Tidak ada pilihan di aplikasi untuk memindai beberapa barcode sekaligus, tapi ada di perpustakaan. - person Sean Owen; 27.02.2013
comment
@SeanOwen ya, satu-satunya pilihan di aplikasi ini adalah membaca beberapa kode batang secara berurutan, tetapi tidak membaca sekaligus. Namun di perpustakaan, hasilnya tidak konsisten, ada saran tentang cara mengambil gambar dari kamera karena pada akhirnya saya menggunakan camera.takePicture(null,null,mPicture) untuk mendapatkannya. Agak sulit untuk men-debug perpustakaan zxing, yang saya perhatikan adalah ada panggilan balik titik hasil, saya tidak yakin cara kerjanya atau cara mendapatkannya atau untuk apa. - person She Smile GM; 28.02.2013