我想知道是否有人知道如何将图像数据分配给已经创建的cv::Mat
文件。cv::Mat
构造函数似乎有一个重载方法,该方法支持向它传递数据的void*
,但是我不确定对象构造完成后该做什么(不调用构造函数并替换cv::Mat
)。
目前,我手动将cv::Mat.data
指向我想要的数据。我不确定我是否应该为cv::Mat.datastart
做同样的事情。我本以为会有某种帮助函数来允许重新分配cv::Mat
的数据。
谢谢。
发布于 2013-07-02 01:47:49
您只需将预先初始化的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-02 10:09:38
文档:
// 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的任何位置。如果新数据具有不同的大小或类型,则您的标头无效。
https://stackoverflow.com/questions/17416113
复制相似问题