加载和显示图像序列

时间:2016-03-08 13:30:19

标签: c++ image opencv sequence labview

我正在使用LabView和OpenCV从LabView中的文件夹(16位签名)加载未知数量的2D图片,然后将其提供给您执行s.th.的OpenCV。然后将它发送回LabView。

这是我的方法,但它不起作用,希望你可以帮助我?

VI

Code

更新:

唯一没有给我正确像素值的是如何从LabView访问3D数组。

Code V2

VI V2

Call Lib Function

tunnel mode

2 个答案:

答案 0 :(得分:0)

您只能读取一个图像:只有一个路径和一个IMAQ图像从for循环中输出。

我的建议:将IMAQ读取文件功能放在for循环中,并为IMAQ图像启用自动索引(记得在for循环的每次迭代中更改图像名称)。

然后,您可以在每个读取的图像上应用OpenCV功能。

答案 1 :(得分:-1)

你可以使用包含图像组路径的std :: vector。

您可以使用如下所示的函数来填充向量,以及图像的相对路径:

std::vector<std::String> imagelistVector(std::string path)
{
    std::vector<std::String> fn;
    cv::glob(path,fn,false);
    return fn;
}

使用cv :: glob模板

用法例如:

vector<String> imglist=imagelistVector("data/*.jpg");

将在本地&#34;数据&#34;中读取所有带有.jpg扩展名的图像。夹

然后你可以使用列表来读取所有图像,使用类似的for循环:

for (unsigned int i =0; i<imglist.size(); i++)
{
  Mat img = imread(filelist.at(i), CV_LOAD_IMAGE_COLOR);
  //do something with each image
}

或者如果您想存储所有图像:

std::vector<cv::Mat> images;
for (unsigned int i =0; i<imglist.size(); i++)
{
  Mat img = imread(filelist.at(i), CV_LOAD_IMAGE_COLOR);
   images.push_back(img)
}
//do something with all or a group of images