用c ++读取图像数组(使用opencv)

时间:2013-05-27 10:56:07

标签: 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};

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

1 个答案:

答案 0 :(得分:6)

C ++ 11初始化语法将是

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

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

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

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支持,你可以简单地将元素推回到现有的向量中,

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;
}