在onPictureTaken之后获得黑色预览和图像

时间:2016-02-24 14:30:58

标签: java android opencv image-processing

我正在尝试开发一个应用程序,它会自动裁剪使用opencv检测到的卡片边缘。

 Here in this function i am doing the following :

1)将字节数组(即数据)转换为位图,然后转换为Mat

2)裁剪卡片的所需部分并重新调整大小

3)将mat转换回字节数组

4)将修改后的字节数组保存在文件(jpg)

@Override
public void onPictureTaken(byte[] data, Camera camera) {
    Mat mat=new Mat();
    Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
    Utils.bitmapToMat(bmp, mat);   //converting a mat to bitmap

    Mat matCrop = mat.submat((int)p1.y,(int)p2.y,(int)p3.x,(int)p4.x);//surely no issues here

    Imgproc.resize(matCrop, matCrop, mat.size());

    byte[] imageInBytes = new byte[(int)(matCrop.total() * matCrop.channels())];
    mat.get(0, 0, imageInBytes);
    data=imageInBytes;

            try {
        FileOutputStream fos = new FileOutputStream(mPictureFileName);
        fos.write(data);
        fos.close();
    } catch (java.io.IOException e) {}

}

图片保存在内存中,但预览和图片都是空白的。保存的文件也需要大约3.5 Mb,这可能是什么原因? 提前致谢。

0 个答案:

没有答案