我正在寻找一种方式来覆盖Android中的openCV(2.4.3)图像。基本上,我正在做一些图像过滤,我希望用户能够看到干净的过滤视频流,但在上角看到过滤器正在做的预览:添加OpenCV for Android的图像覆盖
我试过设置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中这样做的道路,但我会考虑在这一点上的任何解决方案
你是说覆盖图像与* background *图像相同吗? – karlphillip