西安网站制作设计找哪家,网站备案幕,wordpress 博客实例,汕头网站外包这段代码的功能是使用OpenCV库读取一个YAML或XML格式文件中的图片列表#xff0c;并且逐个地在窗口中以灰度图像的形式显示这些图片。用户可以按任意键来查看下一张图片。程序提供了帮助信息输出#xff0c;指导用户如何使用该程序。此外#xff0c;它使用命令行参数解析器来… 这段代码的功能是使用OpenCV库读取一个YAML或XML格式文件中的图片列表并且逐个地在窗口中以灰度图像的形式显示这些图片。用户可以按任意键来查看下一张图片。程序提供了帮助信息输出指导用户如何使用该程序。此外它使用命令行参数解析器来获取文件路径参数并对参数进行相应的检查和处理。如果图片列表文件成功读取程序会逐个显示图片列表中的每一张图片否则程序会终止并返回错误代码。 // 包含必要的OpenCV头文件
#include opencv2/imgcodecs.hpp
#include opencv2/highgui.hpp
#include iostream
#include vector// 使用OpenCV和标准命名空间中的名称
using namespace cv;
using namespace std;// 声明帮助函数用于向用户展示如何使用该程序
static void help(char** av)
{// 向控制台打印使用该程序的指南cout \nThis program gets you started being able to read images from a list in a file\nUsage:\n./ av[0] image_list.yaml\n \tThis is a starter sample, to get you up and going in a copy pasta fashion.\n \tThe program reads in an list of images from a yaml or xml file and displays\n one at a time\n \tTry running imagelist_creator to generate a list of images.\nUsing OpenCV version %s\n CV_VERSION \n endl;
}// 函数从文件中读取图片列表并存储到一个字符串向量中
static bool readStringList(const string filename, vectorstring l)
{l.resize(0); // 清空字符串向量FileStorage fs(filename, FileStorage::READ); // 打开文件存储器以读取数据if (!fs.isOpened()) // 如果失败则返回falsereturn false;FileNode n fs.getFirstTopLevelNode(); // 获取文件中的第一个顶层节点if (n.type() ! FileNode::SEQ) // 如果节点类型不是序列则返回falsereturn false;FileNodeIterator it n.begin(), it_end n.end(); // 迭代器遍历节点for (; it ! it_end; it) // 遍历所有的节点l.push_back((string)*it); // 将节点的值作为字符串添加到向量中return true; // 成功读取列表后返回true
}// 主处理函数显示图片列表中的每一幅图片
static int process(const vectorstring images)
{namedWindow(image, WINDOW_KEEPRATIO); // 创建一个窗体窗体的大小可以调整for (size_t i 0; i images.size(); i){Mat image imread(images[i], IMREAD_GRAYSCALE); // 读取图片并转换为灰度图像imshow(image,image); // 在窗体中显示图片cout Press a key to see the next image in the list. endl; // 提示用户按键以查看下一张图片waitKey(); // 等待用户按键}return 0; // 正常结束程序返回0
}// 程序入口点主函数
int main(int ac, char** av)
{cv::CommandLineParser parser(ac, av, {help h||}{input||}); // 用于解析命令行参数if (parser.has(help)) // 如果有help参数{help(av); // 显示帮助信息return 0; // 退出程序}std::string arg parser.getstd::string(input); // 获取输入参数即图片列表文件的路径if (arg.empty()) // 如果参数为空{help(av); // 显示帮助信息return 1; // 退出程序并返回错误代码1}vectorstring imagelist; // 定义字符串向量存储图片列表if (!readStringList(arg,imagelist)) // 读取图片列表如果失败{cerr Failed to read image list\n endl; // 向错误输出流打印错误信息help(av); // 显示帮助信息return 1; // 退出程序并返回错误代码1}return process(imagelist); // 调用process函数处理图片列表然后退出程序
}