【发布时间】:2017-08-16 18:47:33
【问题描述】:
相机将图像存储到 FTP 服务器,文件名模式为“文件夹”+“程序名”+索引+“格式”,其中索引是从 1 到近 100 亿的数字(0000000001 到 9999999999)。显示图像需要路径和文件名。在OpenCV上需要显示10张图片,所以我尝试使用函数ShowManyImages制作以下测试代码。
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;
}
至此,我可以展示创建 var 变量的图像 1。但是,这段代码很乱,我不想创建img1,img2, ..., img10。
所以我尝试制作类似于 var 到 Mat img 所做的事情,创建像 For i=1 To 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)); 或者还有其他/更好的方法吗?
【问题讨论】:
-
数组和/或向量与循环配合得非常好。
标签: c++ opencv computer-vision