2013-02-27 1 views
10

현재 한 이미지에서 여러 QR 코드를 읽는 스캐너를 개발 중입니다. 이미지에서 QR 코드를 읽을 수 있지만 결과가 일치하지 않습니다. 이미지에 4 개의 QR 코드가 있다고 가정 할 때 때로는 2, 때로는 3 또는 단지 1을 읽을 수 있습니다. 원본 스캐너 (ZXing Scanner)와 달리 빠르게 디코딩합니다. 내 경우에는 충분한 빛이 있는지 확인해야하며 이미지를 디코딩하려면 이미지가 흐려지지 않아야합니다.zxing 라이브러리를 사용하여 하나의 이미지에서 여러 qr 코드를 읽는 방법

이미지를 디코딩하려면 QRCodeMultiReader을 사용하고 있습니다. 현재 ZXing 라이브러리를 사용하여 응용 프로그램을 만듭니다.

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); 
} 
+1

여러 바코드를?/ –

+0

불행하게도 읽을 수있는 완벽한 솔루션을 찾을 수 있습니다 나는 그 기능에 대한 개발을 중단했기 때문에 그렇게하지 못했습니다. 그러나 이것에 대한 해결책을 찾기 위해 계속해서 특히 안드로이드로 돌아갈 것입니다. –

+0

이전에 시도한 코드를 나와 공유 할 수 있습니까? –

답변

0

안녕하세요이 유는 여러 QR 코드를 읽을 수 유를 사용하고 그것을 확인 있도록 대량 바코드를 스캔 설정에서 옵션을 가지고 Zxing 바코드 스캐너 응용 프로그램에서 확인하십시오 : 아래

내 코드의 조각이다 하나 이상의 이미지에서 한 번에 한 번 더 자세한 정보를 알기 위해 Zxing 라이브러리의 소스 코드를 확인하십시오.

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

+0

zxing 스캐너에서 여러 코드를 스캔하도록 설정을 변경할 수 있다는 것을 알지 못했습니다. 감사합니다. zxing 스캐너 소스 코드를 다시 디버깅합니다. –

+1

벌크 스캔은 한 번에 여러 바코드를 읽지 않고 여러 바코드를 연속해서 읽는 것과는 아무런 관련이 없습니다. 한 번에 여러 바코드를 스캔 할 수있는 옵션이 없지만 라이브러리에 있습니다. –

+0

@SeanOwen 예, 앱의 유일한 옵션은 연속해서 여러 개의 바코드를 읽는 것이지만 한 번에 읽을 수는 없습니다. 그러나 라이브러리에서, 결과는 일관성이 없습니다, 내 마지막에 카메라 coz에서 이미지를 얻는 방법에 대한 제안, 나는 그것을 얻기 위해'camera.takePicture (null, null, mPicture)'를 사용합니다. zxing 라이브러리를 디버깅하는 것이 다소 어렵습니다. 결과 포인트 콜백이 있음을 알 수 있습니다. 어떻게 작동하는지, 어떻게 얻는 지, 또는 무엇을 얻을 지 불확실합니다. –

0

내가 기본 카메라 앱으로 intent 사용한 카메라에 대해 하나의 응용 프로그램을 만든 모든에서 Andriod OS와 함께이 일반적으로 그들은 더 나은 최적화 될 일반 카메라 응용 프로그램을 작성하는 것보다 해당 장치에 최적화되어 있습니다 귀하의 휴대 전화 전용 ... 그래서 더 나은 사용을 위해 카메라 intent.

단일 이미지에서 여러 QR을 추출하는 경우 아래 코드를 시도했습니다.
그러나 결과는 4 중 몇 가지 내가 한 수 시간 또는 2 또는 3 일치하지 않는 시간이 없음 .... 그 완벽하지 솔루션

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()); 
     } 
    } 
관련 문제