两个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/

10-12 00:27
查看更多