我正在使用Android的OpenCV(2.4.8)和Zxing(2.3.0),我想在{{1}中实现“隐藏”的QR码扫描(在屏幕上不使用Zxing CaptureActivity
)转换为位图,然后在控制台中显示解码结果。
所以,我在Mat
方法中调用Zxing()
methot:
onCameraFrame
这是我的public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// there will be preprocessing
mRgba = inputFrame.rgba();
try {
zxing();
} catch (ChecksumException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mRgba;
}
方法(受ZXing convert Bitmap to BinaryBitmap启发):
zxing()
使用此代码,当相机不捕获QR码时,我在LogCat控制台中收到“未找到代码”消息(大约每秒5个),但是当尝试扫描QR码时,我看不到任何消息(我想我会收到sResult)。 我错了什么?
Android清单:
public void zxing() throws ChecksumException, FormatException{
Bitmap bMap = Bitmap.createBitmap(mRgba.width(), mRgba.height(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mRgba, bMap);
int[] intArray = new int[bMap.getWidth()*bMap.getHeight()];
//copy pixel data from the Bitmap into the 'intArray' array
bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight());
LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(),intArray);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new QRCodeMultiReader();
String sResult = "";
try {
Result result = reader.decode(bitmap);
sResult = result.getText();
Log.d(TAG, sResult);
}
catch (NotFoundException e) {
Log.d(TAG, "Code Not Found");
e.printStackTrace();
}
}
答案 0 :(得分:0)
这是一个愚蠢的错误,我错了行
Log.d(TAG, sResult);
应该是:
Log.d(TAG,"Found something: "+result.getText());