【发布时间】:2016-06-22 11:33:21
【问题描述】:
我正在使用 LabView 和 OpenCV 从 LabView 中的文件夹(16 位签名)加载未知数量的 2D 图片,然后将其提供给您执行某项操作的 OpenCV。用它,然后将其发送回 LabView。
这是我的方法,但没有奏效,希望你能帮助我吗?
更新:
唯一没有给我正确像素值的是如何从 LabView 访问 3D-Array。
【问题讨论】:
标签: c++ image opencv sequence labview
我正在使用 LabView 和 OpenCV 从 LabView 中的文件夹(16 位签名)加载未知数量的 2D 图片,然后将其提供给您执行某项操作的 OpenCV。用它,然后将其发送回 LabView。
这是我的方法,但没有奏效,希望你能帮助我吗?
更新:
唯一没有给我正确像素值的是如何从 LabView 访问 3D-Array。
【问题讨论】:
标签: c++ image opencv sequence labview
您只读取一个图像:只有一个路径和一个 IMAQ 图像从 for 循环中输出。
我的建议:将 IMAQ 读取文件功能放在 for 循环中,并为 IMAQ 图像启用自动索引(记得在 for 循环的每次迭代中更改图像名称)。
然后,您可以在每个读取的图像上应用您的 OpenCV 函数。
【讨论】:
您可以使用包含图像组路径的 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");
将读取本地“数据”文件夹中所有扩展名为 .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
【讨论】:
glob).