使用OpenCV和Zxing for Android扫描QR码

时间:2014-03-03 11:05:31

标签: android opencv zxing

我正在使用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();
    }

    }

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的错误,我错了行

Log.d(TAG, sResult);

应该是:

Log.d(TAG,"Found something: "+result.getText());