将图像加载到现有 Mat 中
Posted
技术标签:
【中文标题】将图像加载到现有 Mat 中【英文标题】:Load image into existing Mat 【发布时间】:2012-03-23 21:24:31 【问题描述】:有没有办法将图像加载到现有的 Mat 中?如果没有,有没有办法控制 OpenCV 在调用 cv::imread 时分配内存的位置?
【问题讨论】:
为什么你需要这样做?如果您有一系列图像想要像处理视频文件一样处理,FFmpeg 可以做到……如果没有,那么这里的用例是什么? 我正在使用 OpenCV 将图像加载到我的应用程序中。但是,我使用的是我自己的图像类,所以我将 OpenCV Mat 转换为我自己的图像类。我不想复制图像,所以我想要一种方法来告诉 OpenCV 在哪里加载图像。 我明白了... OpenCV 定义了一个cv::imread_()
函数,它接受cv::Mat
作为loadsave.cpp
中的参数,但它被声明为static
,因此您需要修改源代码并重新编译以访问它。否则我认为这个问题没有答案:(
【参考方案1】:
我会简单地为你的类创建一个构造函数,它接受 imread 的输入参数并将图像直接加载(和分配)到你的类中。
所以是这样的:
class myClass
private:
Mat img;
public:
myClass(const string fileName)
this->img = imread(fileName);
【讨论】:
以上是关于将图像加载到现有 Mat 中的主要内容,如果未能解决你的问题,请参考以下文章