2

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

目前,我手动指向cv::Mat.data我想要的数据。我不确定我是否应该为cv::Mat.datastart. 我原以为会有某种帮助函数来允许重新分配cv::Mat的数据。

谢谢。

4

2 回答 2

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();
于 2013-07-02T01:47:49.070 回答
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 的位置。如果新数据的大小或类型不同,则您的标头无效。

于 2013-07-02T10:09:38.430 回答