我试图在Android(原生部分,.cpp)的视频帧上覆盖图像。我以yuv420sp格式获取我的视频帧,我将此char *(缓冲区)传递给opencv并在那里创建一个MAT < / p>
Mat frame(Size(width,height),8UC1,buff);
同样地,我将我的图像加载到char *(缓冲区),转换为yuv420SP,并以类似的方式创建图像Mat:
Mat imageMat((Size(width,height),8UC1,imgBuff));
在此之后,我将收到的视频帧上的叠加图像复制为:
Rect roi(X,Y,U,V);
imageMat.copyTo(frame(roi));
我需要这个合并的框架采用相同的yuv420sp格式,所以在这之后我会返回:
return frame.data;//i am returning char * from this api to my .cpp file
图像被正确覆盖但问题是只有覆盖的部分是灰度的,其余的全帧正确着色! 我只是不明白什么是错的!
注意: 我尝试过几件事情: 我通过以下方式转换了这些东西(框架和图像):
cvtColor(frame,frame,CV_COLOR_yuv420sp2BGR);
但我只希望以yuv420sp格式回复,并且没有这样的标志可以将其转回yuv420sp。
2.与8UC3合作,并没有真正有所作为。无论如何,我的视频帧是彩色的,那么为什么图像是灰度的呢?
真的卡在这里!任何建议都会非常有用!