相机将图像以文件名模式作为“文件夹”+“程序名”+索引+“格式”存储到FTP服务器,其中索引是从一个到几乎一百亿的数字0000000001至9999999999)。路径和文件名是显示图像所必需的。需要在OpenCV上显示10个图像,所以我尝试使用函数ShowManyImages进行以下测试代码。使用循环声明Mat类
int main() {
int img_ini = 1;
std::string img_path = "../data/";
std::string img_name = "img";
std::string img_format = ".bmp";
std::string var;
var = img_path + img_name + std::to_string(img_ini) + img_format;
Mat img1 = imread(var);
Mat img2 = imread("../data/img2.bmp");
Mat img3 = imread("../data/img3.bmp");
Mat img4 = imread("../data/img4.bmp");
Mat img5 = imread("../data/img5.bmp");
Mat img6 = imread("../data/img6.bmp");
Mat img7 = imread("../data/img6.bmp");
Mat img8 = imread("../data/img6.bmp");
Mat img9 = imread("../data/img6.bmp");
Mat img10 = imread("../data/img6.bmp");
ShowManyImages("Image", 10, img1, img2, img3, img4, img5, img6, img7, img8, img9, img10);
return 0;
}
到此为止,我可以显示图像1创建var
变量。但是,这段代码很混乱,我不想创建img1,img2, ..., img10
。
因此,我试图做一些类似于var
到Mat img,创建一个循环像For i = 1到10 Mat img + i = imread(img_path + img_name + std::to_string(img_ini + i) + img_format;)
。但是不能,因为Mat()不是imread()。
- 有没有办法让类似于描述的for循环?
还是更营造出宛如一个void函数:
Mat img1 = imread(var(1)); Mat img2 = imread(var(2)); Mat img3 = imread(var(3)); Mat img4 = imread(var(4)); Mat img5 = imread(var(5)); Mat img6 = imread(var(6)); Mat img7 = imread(var(7)); Mat img8 = imread(var(8)); Mat img9 = imread(var(9)); Mat img10 = imread(var(10));
还是有另一种/更好的办法?
数组和/或向量与循环播放非常好。 – dasblinkenlight
请参阅:[如何避免滥用标签?](https://meta.stackoverflow.com/questions/354427/how-do-i-avoid-misusing-tags) – EJoshuaS