作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
两个 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),因此 channel 1-3 设置为 0, channel 4(alpha)设置为255. 如果你尝试这样做会怎样:
mRgba.setTo(new Scalar(0, 255, 0, 0)); // should be set to green.
另外,请注意,您只能在分配矩阵后使用 setTo
。
希望对您有所帮助!
关于android - Android 版 OpenCV : how to copy a Mat object (image) to another Mat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286068/
我是一名优秀的程序员,十分优秀!