将图像加载到现有 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 中的主要内容,如果未能解决你的问题,请参考以下文章

Opencv中图像的遍历与像素操作

用于 Numpy 数组中图像的图像数据生成器

画布中图像的 CORS 设置

Swift导航栏中图像的动画变化

UICollectionViewCell 中图像的异步加载导致标签消失

根据列表中图像的数量按比例调整动态图像列表的大小