2012-12-18 22 views
0

的Android图像I有这样的代码:过程与OpenCV的

protected Bitmap processFrame(byte[] data) { 
    Mat mat = new Mat(mFrameHeight, mFrameWidth, CvType.CV_8UC3); 
    mat.put(0, 0, data); 

    //process mat with native code 

    Utils.matToBitmap(mat, mBitmap); 

    return mBitmap; 
} 


private Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() { 

    public void onPreviewFrame(byte[] data, Camera camera) { 
     Bitmap bmp = processFrame(data); 

     if (bmp != null) { 
      //draw bmp 
     } 
    } 
}; 

在某些时候我位图定义为:

mBitmap = Bitmap.createBitmap(mFrameWidth, mFrameHeight, Bitmap.Config.RGB_565); 

结果是所拍摄的相同的相机帧,但在灰度重复3时间水平,我试着CvType.CV_8UC4,他们被重复4次,而不是。

我需要显示整个图像如使用相同的步骤

有谁赶错误?

+0

听起来像它不是抄袭的某些原因。你为什么不使用样本中的代码?他们给你所有这些基础设施。寻找JavaCameraView文件。 – alistair

+0

我已经建立了android应用程序,只需要在侧面集成opencv,你认为可能是这种行为的原因? –

回答

1

就改变了这种方法。它是解决..

protected Bitmap processFrame(byte[] data) { 

    Mat mYuv = new Mat(mFrameHeight + mFrameHeight/2, mFrameWidth, CvType.CV_8UC1); 
    mYuv.put(0, 0, data); 

    Mat mRGB = new Mat(); 

    Imgproc.cvtColor(mYuv, mRGB, Imgproc.COLOR_YUV2RGB_NV21, 3); 

    ProcessFrame(mRGB.getNativeObjAddr(), mRGB.width(), mRGB.height()); 

    Utils.matToBitmap(mRGB, mBitmap); 

    return mBitmap; 
}