我想知道是否有人知道应该如何将图像数据分配给cv::Mat
已经创建的文件。似乎cv::Mat
构造函数有一个重载方法,支持将void*
数据传递给它,但是我不确定一旦构造了对象该怎么做(不调用构造函数并替换cv::Mat
)。
目前,我手动指向cv::Mat.data
我想要的数据。我不确定我是否应该为cv::Mat.datastart
. 我原以为会有某种帮助函数来允许重新分配cv::Mat
的数据。
谢谢。
您可以将预初始化的重新分配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();
文档:
// 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 的位置。如果新数据的大小或类型不同,则您的标头无效。