利用C++标准库<sstream>中的类stringstream实现OpenCV下的图片批量读取
说明:本博文的代码要求图片的名字有规律,如果您需要批量读取图片的名字没有规律,可参考下面这篇博文:
https://www.hhai.cc/thread-102-1-1.html
关于类stringstream的详细介绍,请参见链接 https://www.hhai.cc/thread-100-1-1.html
如果您认真阅读了上面这个链接对类stringstream的介绍,那么就很容易实现“利用C++标准库中的类stringstream实现OpenCV下的图片批量读取”的程序了。
现在我们要读取以下图片:
那么在详细了解类stringstream的使用后,我们便很容易写出批量读取以上图片的代码。
关键是如何把图片的名字批量生成,我们可以利用类stringstream将图片名字中的数值部分生成。
代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
#define NUM 13 //读取image的个数
int main()
{
Mat image;
string ImgName;
int n = 1;
while (n <= NUM) //13
{
ImgName = "flower-";
//int 转换string
stringstream ss;
string str;
ss << n;
ss >> str;
ImgName = ImgName + str;
ImgName = "F:/material/images/flower-01/" + ImgName + ".jpg";
cout << "读取:" << ImgName << endl;
image = imread(ImgName);//读取图片
if (image.data == 0)
{
printf("图片读取失败\n\n");
}
else
{
printf("图片读取成功\n\n");
}
n++;
}
waitKey(0);
system("pause");
return 0;
}
上面的代码很简单,没什么好多说的。
代码中用到的图片文件百度网盘下载链接:
https://pan.baidu.com/s/1piFDu5ZmQQzXy8P_YpGaiQ?pwd=u1fx
代码运行结果如下:
结果说明:
由于咱们的文件夹中不存在“flower-11.jpg”和“flower-12.jpg”,所以程序提示读取失败。
如果您需要批量读取图片的名字没有规律,可参考博文:
https://www.hhai.cc/thread-102-1-1.html
|