使用循环声明 Mat 类
Using a loop to declare a Mat class
相机将图像存储到FTP服务器,文件名模式为"文件夹"+"program_name"+索引+"格式",其中索引是从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
.
所以我尝试制作类似于对 Mat imgvar
所做的操作,创建一个类似 For i=1 到 10Mat img + i = imread(img_path + img_name + std::to_string(img_ini + i) + img_format;)
.但是不能,因为垫子((没有那么不可读((。
- 有没有办法制作类似于描述的 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));
还是有其他/更好的方法?
尝试使用 Mats 向量。 有几种方法可以加载它们并显示它们。
std::vector<cv::Mat> myMatArray;
for(int i = 0; i < numberOfPicturesToLoad; i++){
std::string imgToLoad = img_path + img_name + std::to_string(i) + img_format;
cv::Mat temp = imread(imageToLoad);
myMatArray.push_back(temp);
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- Difference in displaying cv2 Mat
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- 使用循环声明 Mat 类
- 如何在C++中声明一个定义为func(cv::Mat &img)的函数
- 如何在 opencv 中声明存储 0 到 1 之间的浮点值的 Mat
- mat类opencv中的begin()方法声明
- 转发声明cv::Mat