さて、私はオンラインで検索してみましたが、これが見つかりません。
私は持っています:
- 私が混合して使用しているOpenCV4Android:Javaとネイティブ。
で得られたマット
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
これは他の誰かのライブラリであり、完全に非ネイティブな方法で構築されているため、ネイティブに変更することはできません。
以下を使用してこのマットを渡すネイティブメソッド
mFrame.nativeObj
:JNIEXPORT int JNICALL Java_com_... ( ...jlong addr ... ) { Mat& mrgba = *((Mat*)addr); // do stuff imwrite( mrgba, ... ); }
さて...私はこの行列を使用し、それをimwrite
すべてこのネイティブ部分に、で記述します。imwriteはファイルを書き込みますが、その色はすべて間違っています。白の場合は赤、黒の場合は緑、テーブルの色、つまり黄色がかった場合は紫。さて、やみくもにやってみる代わりにcvColor
、convertTo
私はむしろ何かを知りたいです。
チャネルの数、タイプ、チャネルの順序など、最初に取得されたフレームについて知っておくべきことは何ですか。
capture.retrieve(mFrame, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
その後、JNIを介してネイティブOpenCVに渡されますか?事実上、ネイティブimwriteが動作するには、どのような変換を行う必要がありますか?