将数据分配给cv :: Mat

时间:2013-07-02 01:33:56

标签: c++ opencv

我想知道是否有人知道如何将图像数据分配给已创建的cv::Mat文件。似乎cv::Mat构造函数有一个重载方法,它支持传递void*数据,但是我不确定一旦对象已经被构造了该怎么做(没有回忆构造函数和替换cv::Mat)。

目前,我手动将cv::Mat.data指向我想要的数据。我不确定我是否应该对cv::Mat.datastart做同样的事情。我原本以为会有某种辅助函数允许重新分配cv::Mat的数据。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以将预先初始化的cv::Mat重新分配给新的图像数据。以下是将新图像数据分配给已创建的cv::Mat的一些合法方法。

cv::Mat my_mat = cv::imread("some_image.jpg");
my_mat = cv::imread("another_image.jpg");

cv::Mat second_mat = cv::imread("one_more.jpg");
second_mat = my_mat.clone();

答案 1 :(得分:1)

文档:

// constructor for matrix headers pointing to user-allocated data
Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP);
Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP);

数据指针可以指向具有有效_size和_type的任何位置。如果新数据的大小或类型不同,则标题无效。