我想知道是否有人知道如何将图像数据分配给已创建的cv::Mat
文件。似乎cv::Mat
构造函数有一个重载方法,它支持传递void*
数据,但是我不确定一旦对象已经被构造了该怎么做(没有回忆构造函数和替换cv::Mat
)。
目前,我手动将cv::Mat.data
指向我想要的数据。我不确定我是否应该对cv::Mat.datastart
做同样的事情。我原本以为会有某种辅助函数允许重新分配cv::Mat
的数据。
感谢。
答案 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的任何位置。如果新数据的大小或类型不同,则标题无效。