我想用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};
从函数返回图像数组的最佳方法是什么。
答案 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;
}