两个Mat对象都包含(不同)图像。我想在mSnapshot
上复制mRgba
。
我尝试了这些(单独地),但是它们似乎都没有改变mRgba
:
mSnapshot.assignTo(mRgba);
mSnapshot.copyTo(mRgba);
mRgba = mSnapshot;
这将引发异常:
mRgba.setTo(mSnapshot);
这确实可行,并将
mRgba
设置为全黑图像:mRgba.setTo(new Scalar(0,0,0,255));
我想念什么?
[编辑]
可以在here中找到源文件和异常。
最佳答案
要复制图像,应使用clone()
成员函数,如下所示:
capture.retrieve(mSnapshot, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
mRgba = mSnapshot.clone();
另外,OpenCV以BGR顺序存储信息。因此,您的行:
mRgba.setTo(new Scalar(0,0,0,255));
为清楚起见进行编辑:此命令将每个像素设置为(0,0,0,255),因此将通道1-3设置为0,将通道4(alpha)设置为255。
mRgba.setTo(new Scalar(0, 255, 0, 0)); // should be set to green.
另外,请注意,分配矩阵后,您只能使用
setTo
。希望有帮助!
关于android - Android的OpenCV:如何将Mat对象(图像)复制到另一个Mat?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8286068/