用OpenCV批量读取图片的三种方法

来源:互联网 发布:java io流详解 编辑:程序博客网 时间:2024/06/04 12:48

本文转载自 http://opencv66.net/thread-13-1-1.html

有时我们需要批量读取图片,所以我们有必要知道怎么在OpenCV开源环境下批量读取图片!
批量读取图片的关键是如何让程序知道文件夹下图片的名字!
第一种方法
这种方法只针对图片名字有规律的情况,比如:
***(0).jpg
***(1).jpg
***(2).jpg
***(3).jpg
..................
源代码如下
源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

代码说明
上面的代码实现的关键是把int类型转化为字符串类型,在这里使用类stringstream来进行转换,有人要问为什么不用sprintf来实现,具体的原因和对类stringstream的使用说明大家可下面这个网页!
http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html

在上面的代码中,我们想在路径 D:\\Hubble 想读取13张图片,但是我只在文件夹中放了10张图片,所以前10张应该是读取成功,而后三张是读取失败的。
相关截果如下



第二种方法
将图像的名字放在一个txt文件中,每一行是一幅图像的名字!
源代码如下

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

代码说明:上面的程序用类ifstream实现一行一行的读取txt文件,具体的使用方法这里就不再赘述了,看上面的代码很容易明白。
相关截图如下


上图中之所以最后三幅图像读取失败,是因为文件夹下没有这三个名字的图像,文件夹下有的图片如下面截图所示:



第三种方法
前两种方法都需要知道图片的名字,第三种方法则不需要,这种方法能自动遍历读取文件下的所有图片文件
源代码如下

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

源代码请到原帖中查看,原帖链接 http://opencv66.net/thread-13-1-1.html

代码说明:本程序用dirent.h中定义的DIR类实现对目录中所有文件的遍历读取!具体的使用方法这里就不再赘述了,看上面的代码很容易明白。
头文件<dirent.h>下载链接:链接:http://pan.baidu.com/s/1i4WH0HZ 密码:bwas
程序运行截图如下


本文转载自 http://opencv66.net/thread-13-1-1.html

原创粉丝点击