1

我想用 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};

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

4

1 回答 1

7

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;
}
于 2013-05-27T10:59:05.237 回答