我目前正在开发一个扫描器读取一个图像中发现多个QR码。 我设法读取图像中的QR码,但它给我不一致的结果。 假设有在图像中4个QR码,有时可以阅读2和3有时或只是1.不同于原始扫描器(斑马线扫描仪)进行解码快。 虽然在我的情况,我必须确保有足够的光线和图像不模糊进行解码。
我现在用的是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);
}
你好,请在斑马线条形码扫描应用程序它在设置选项,以扫描批量条码,这样你们启用它,并检查它ü可以在同一时间从一个或多个图像读取多重QR码,并检查斑马线库的源代码,以已知检查详细信息。
https://code.google.com/p/zxing/
我已经创造了一个摄像头应用程序,我已经使用intent
作为默认的摄像头应用程序是有每的Andriod OS,一般他们是该设备比写一个通用的相机应用这将只在您的手机进行优化,更好地优化...所以相机更好的使用intent
。
从单一图像中提取多重QR我尝试下面的代码。
但结果并不一致一段时间,我得到1或2或3出4一段时间没有....它不是完美的解决方案
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());
}
}