我正在开发一个基于 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 部分的内容时,我发现它根本不起作用。
即使在调用 converto()
后,mRgb
仍为 CV_8UC4
这是什么原因造成的?
最佳答案
好的,答案是here
Imgproc.cvtColor(mRgba,mRgb,Imgproc.COLOR_RGBA2RGB);
而不是
mRgba.convertTo(mRgb, CvType.CV_8UC3);
非常感谢!!
关于android - Mat::convertto() 不适用于 javacv、android 相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856805/