昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 687|回复: 0
收起左侧

利用C++标准库<sstream>中的类stringstream实现OpenCV下的图片批量读取

[复制链接]

239

主题

241

帖子

928

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
928
昊虹君 发表于 2022-10-28 12:43 | 显示全部楼层 |阅读模式
利用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


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2022024117号-1 )

GMT+8, 2024-5-3 16:25 , Processed in 0.022591 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表