c++ - 使用循环声明 Mat 类

标签 c++ opencv computer-vision

相机将图像存储到 FTP 服务器,文件名模式为“文件夹”+“程序名称”+索引+“格式”,其中索引是从一到近百亿(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 做一些类似于 var 所做的事情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));
    
  • 或者有其他/更好的方法吗?

最佳答案

尝试使用 Mats vector 。有几种加载和显示它们的方法。

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);
}

关于c++ - 使用循环声明 Mat 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45720893/

相关文章:

c++ - C++ 11 中初始化类成员变量

python - 计算图片中蓝色像素的个数

c++ - 3D 相机变换对 2D 图像像素的影响

python - cv2.approxPolyDP() , cv2.arcLength() 这些是如何工作的

c++ - 暂时将指针设为 NULL 有什么意义吗?

c++ - 将LibSVM输出转换为浮点 vector

c++ - 运算符重载 C++ - 重载输出 "<<"运算符

opencv - 相机平移时的单应性(用于拼接)

c++ - 熵改变每次执行的值

python - 如何将使用 Pillow 修改的 .png 图像添加到 OpenCV 视频中?