opencv:Mat2.copyTo(Mat1(Rect))仅为复制区域提供灰度

时间:2013-03-28 18:37:25

标签: opencv grayscale yuv mat

我试图在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合作,并没有真正有所作为。无论如何,我的视频帧是彩色的,那么为什么图像是灰度的呢?

真的卡在这里!任何建议都会非常有用!

0 个答案:

没有答案