将Mat数据复制到另一个Mat

时间:2013-01-29 10:20:02

标签: c++ opencv

我需要从另一张Mat Mat中复制我的图像数据。我的代码如下所示

Mat src; // Source image
Mat res(1024,768,CV_8UC3); //Same width and height as source
uchar *dest=src.data;
res.data=dest;

但是我的目标图像变形了。这是我的编码问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:6)

  

但是我的目标图像变形了。这是我的编码问题吗?

如果宽度和高度相同,那么问题就在于通道数(每个像素的字节数)。尝试将CV_8UC3更改为CV_8UC1

而且您的代码也不会复制数据,它会复制指针。阅读有关memcpy

的文档

实际上你应该使用cv::Mat的方法clone

// returns deep copy of the matrix, i.e. the data is copied
    Mat clone() const;