【问题标题】:OpenCV - Array of Images, or Buffer of MatOpenCV - 图像数组或垫子缓冲区
【发布时间】:2013-04-29 07:38:55
【问题描述】:

如何,我可以使用 OpenCV 获得一个缓冲区或图像数组“Mat”吗?

我的意思是:有一组图像,想拾取并放入一个类似的数组中

我该怎么做?和 C++ 普通数组样式一样吗?

 Mat images[2];

    images[0] = imread(...);
    images[1] = imread(..);

提前致谢。

【问题讨论】:

  • 在这里问之前你有没有尝试过?
  • 对不起,我没有投反对票!!!

标签: arrays image opencv buffer


【解决方案1】:

我必须实现类似的东西,我不需要查看图像,我只想从中提取一些数据,但我还是要添加 imread。代码如下:

Mat mat[10];enter code here
char c[n]; //n is the size of chars in the directory of images

for(int i=1;i<=10;i++)
{
 sprintf(c,"/directory to images/%d.jpg",i);
 mat[i] = imread(c);
 imshow("mat",mat[i]);
 waitKey(0);
}

这将显示数组中的第一个图像,您必须按任意键才能转到下一个图像。希望这会有所帮助

【讨论】:

    【解决方案2】:

    只需将 cvMat 对象数组声明为-

    Mat image_array[10];      // array of 10 images
    

    现在根据数组的索引将图像读入其中

    image_array[0]=imread("/home/me/Pictures/img1.png",1);
    image_array[1]=imread("/home/me/Pictures/img2.png",1);
    ......
    ......
    image_array[9]=imread("/home/me/Pictures/img9.png",1);
    

    【讨论】:

    • 这个作品?简单的分配?为了召回每张图片,我该怎么做?喜欢 imshow("image",image_array[7]) ??
    • 完全正确。 image_array[7] 表示图像数组的第 8 个图像。
    • 我可以像这样动态声明数组大小吗? Mat image_array[var];
    • 动态我不尝试。但是此时,如果您不知道大小(用于 cicling),请尝试使用其他类型的集合,例如 list,在之前构造列表,然后使用 foreach 迭代对其进行 cicle。
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多