Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么BitmapFactory.decodeByteArray不适用于相机预览?_Android_Bitmapfactory - Fatal编程技术网

Android 为什么BitmapFactory.decodeByteArray不适用于相机预览?

Android 为什么BitmapFactory.decodeByteArray不适用于相机预览?,android,bitmapfactory,Android,Bitmapfactory,因此,我尝试在相机上使用人脸检测,因此我需要使用以下代码将提供给预览回调的字节数组转换为位图: Camera.PreviewCallback previewCallback=new Camera.PreviewCallback() { @Override public void onPreviewFrame(byte[] data, Camera camera) { BitmapFactory.Options options = new BitmapFa

因此,我尝试在相机上使用人脸检测,因此我需要使用以下代码将提供给预览回调的字节数组转换为位图:

Camera.PreviewCallback previewCallback=new Camera.PreviewCallback()
{
    @Override
    public void onPreviewFrame(byte[] data, Camera camera) 
    {
        BitmapFactory.Options options = new BitmapFactory.Options();
        Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
        if(mBitmap==null) faceDetected=false;
        else              faceDetected=(findFace(mBitmap)!=null);            
    }
};
不幸的是,mBitmap始终为null,选项outHeight和outWidth始终为-1,这表示解码错误。
当然,没有诊断,因此无法修复。

BitmapFactory
可能无法处理相机预览帧(例如YUV)使用的图像格式。这可能是真的,但不是很有帮助;-)你确定这一点吗?在这种情况下,你知道如何解决问题吗?然后在安卓onpreviewframe imageview上进行谷歌搜索。我从这里开始,谢谢。您向其他代码发送的链接之一,该代码通过YUV转换为BMP。完全荒谬,但它是有效的decodeByteArray不能使用默认的相机预览格式,这让我仍然目瞪口呆。