好的,所以我一直在尝试和在线搜索,但我找不到这个。
我有:
- 我以混合方式使用的 OpenCV4Android:Java 和 Native。
获得的垫子
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
这不能更改为 Native,因为它是其他人的库,并且完全以非本地方式构建。
mFrame.nativeObj
我通过使用和使用传递此 Mat 的本机方法:JNIEXPORT int JNICALL Java_com_... ( ...jlong addr ... ) { Mat& mrgba = *((Mat*)addr); // do stuff imwrite( mrgba, ... ); }
现在......我使用这个矩阵,然后我用 , 来写它imwrite
,所有这些都在这个原生部分中。虽然 imwrite 确实写入了一个文件,但它的颜色都是错误的。红色的地方应该是白色的,绿色的地方应该是黑色的,紫色的地方应该是我桌子的颜色,即淡黄色。现在,与其盲目地尝试cvColor
and convertTo
,我宁愿知道一些东西。
关于第一次检索到的帧,我应该知道的通道数、类型、通道顺序以及诸如此类的东西是多少
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
然后通过JNI传递给原生OpenCV?实际上,我需要进行哪些转换才能使本机imwrite 正常运行?