c++ - 在 C++ 中读取图像数组(使用 opencv)

标签 c++ opencv stl

我想用 C++ 读取一组图像,我写了这个示例代码:

std::vector<Mat> ReadInputImages()
{
    Mat tmp1=imread("C:/tmp/im1.jpg");
    Mat tmp2=imread("C:/tmp/im2.jpg");
    Mat tmp3=imread("C:/tmp/im3.jpg");
    Mat tmp4=imread("C:/tmp/im4.jpg");
    std::vector<Mat> images;
    images={tmp1,tmp2,tmp3,tmp4};
    return images;
}

但它不起作用,我在

上遇到编译器错误
   images={tmp1,tmp2,tmp3,tmp4};

从函数返回图像数组的最佳方法是什么。

最佳答案

C++11 的初始化语法是

std::vector<Mat> images={tmp1,tmp2,tmp3,tmp4};

std::vector<Mat> images{tmp1,tmp2,tmp3,tmp4};

但是你不需要声明一个临时 vector ,你可以直接返回一个:

std::vector<Mat> ReadInputImages()
{
  return std::vector<Mat>{imread("C:/tmp/im1.jpg"),
                          imread("C:/tmp/im2.jpg"),
                          imread("C:/tmp/im3.jpg"),
                          imread("C:/tmp/im4.jpg")};
}

如果您没有 C++11 支持,您可以简单地将元素推回到现有 vector 中,

std::vector<Mat> ReadInputImages()
{
    std::vector<Mat> images;
    images.push_back(imread("C:/tmp/im1.jpg"));
    images.push_back(imread("C:/tmp/im2.jpg"));
    images.push_back(imread("C:/tmp/im3.jpg"));
    images.push_back(imread("C:/tmp/im4.jpg"));
    return images;
}

关于c++ - 在 C++ 中读取图像数组(使用 opencv),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16771613/

相关文章:

c++ - 我是否应该将使用 push_back 的代码更改为使用 std::move?

c++11 - 对<string,string>的删除赋值运算符的g++编译器错误

c++ - 可能存在内存泄漏 : new char[strlen()]

c++ - 通过 RS232 串行端口将数据发送到条码扫描器

c++ - cuda推力中的多项替换

c++ - 在 C++ 程序中使用 for 循环的问题负责查找 XML 文件中包含 25 个数值的 6 行中每一行的平均值

c++ - 将 Opengl 模型加载到容器中并依次调用它们

c++ - 在 OpenCV 中从 Point 数据类型转换为 int

python - 如何锐化 tensorflow 图像?

c++ - _cvLoadImage undefined symbol 链接问题