Mat :: convertto()无法在javacv,android相机中工作

时间:2013-07-25 11:32:40

标签: android opencv javacv

我正在开发基于Opencv4android SDK教程2 - 混合处理的Android OpenCV应用程序。

在帧处理函数public Mat onCameraFrame(CvCameraViewFrame inputFrame) {}

框架是RGBA,我想通过这样做来制作RGB:

 mRgba = inputFrame.rgba();
 mGray = inputFrame.gray();

 Mat    mRgb=new Mat(640,480,CvType.CV_8UC3);
 mRgba.convertTo(mRgb, CvType.CV_8UC3);
 //Imgproc.cvtColor(mRgba, mRgb, CvType.CV_8UC3);
 PinkImage(mRgb.dataAddr());

但是当我调试并记录我传递给JNI部分的内容时,我发现它根本不起作用。 在调用mRgb

后,CV_8UC4仍为converto()

这是什么原因?

2 个答案:

答案 0 :(得分:2)

好的,答案是here

Imgproc.cvtColor(mRgba,mRgb,Imgproc.COLOR_RGBA2RGB);

而不是

mRgba.convertTo(mRgb, CvType.CV_8UC3);

非常感谢!!

答案 1 :(得分:1)

您永远不会使用转换后的数据。您仍然会将mRgba.dataAddr()传递给PinkImage(),这是未经修改的RGBA图像。您需要传入修改过的数据:

PinkImage(mRgb.dataAddr());