Android用のopenCV(2.4.3)で画像をオーバーレイする方法を探しています。基本的に、私はいくつかの画像フィルタリングを行っており、ユーザーがきれいにフィルタリングされたビデオ ストリームを確認できるようにしたいのですが、上部の隅にフィルターの動作のプレビューが表示されます。
フィルター処理された画像に ROI を設定しようとしましたが、このような JNI コードで AddWeighted を使用しています
活動中:
liveFrame.copyTo(mRgba); //going to be used as the unfiltered stream
//image filtering happends here...
Rect roi = new Rect(0, 0, liveFrame.cols()/4, liveFrame.rows()/4);
mProcMat = new Mat(liveFrame, roi);
AddMats(mRgba.getNativeObjAddr(),mProcMat.getNativeObjAddr()); //will add the two, assign the result to mRgba
AddMats (ネイティブ メソッド):
Mat* image1=(Mat*)mat1;
Mat* image2 = (Mat*)mat2;
float alpha = 0.5;
float beta = 0.5;
addWeighted( (InputArray)*image1, alpha, (InputArray)*image2, beta, 0.0, (OutputArray)*image1);
しかし、画像のサイズが同じでなければならないため、これは機能しません。これを機能させる方法は考えられません。ライブ ストリームの上にある新しいビューにフレームを適用するだけでよいので、iOS ではこれを簡単に行うことができます。Android の場合、私の知る限り、カメラ入力ストリームごとに 1 つのサーフェス ビューしか持つことができません。それが私がopencvでこれを行う道をたどった理由ですが、この時点で任意の解決策を検討します