图像批量读取(opencv C++ python)

来源:互联网 发布:飞豆打印软件注册码 编辑:程序博客网 时间:2024/06/07 23:23

用OpenCV处理图像,特别涉及到机器学习,需要批量地读取图像。方法比较简单,唯一的要求就是文件夹下的图片名称是有规律的,本文将介绍一下,如何批量的读入图片,极其简单,各位可以根据自己的需求做一些修改:
首先我们看一下小博我的图片格式,直接借用上次分帧出来的图片吧,我的图片放在D盘img文件夹里,命名格式很怪异,img381—-img475看一下我的贴图吧。
这里写图片描述
话不多说,贴出我的代码吧,调用了opencv库读入图像,大家拿去用吧。

#include<direct.h>#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;#define null 95int main(){       Mat image;    string ImageName;    int n = 381;    while (n <= 475)    {        ImageName = "img";        stringstream ss;        string str;        ss << n;        ss >> str;        ImageName = ImageName + str;        ImageName = "D:\\img\\" + ImageName + ".jpg";        cout << "处理:" << ImageName << endl;        image = imread(ImageName);        if (image.data == 0)            printf("[erro]没有图片\n");            n++;    }    waitKey(0);    system("pause");    return 0;}

看下运行结果吧。直到读完图片。
程序运行结果
这里写图片描述
方法二:
我们可以直接无脑不按顺序的遍历一遍也可以哦,话不多说,上代码吧:

    #include "opencv2/opencv.hpp"      #include <fstream>      #include <iostream>      #include <string>      #include "dirent.h"      using namespace std;      using namespace cv;      int main()      {          DIR *dir;           struct dirent *entry;           if((dir=opendir("D:\\img"))==NULL)               printf( "Error opening \n ");           else {               while((entry=readdir(dir))!=NULL) {                 cout<<entry->d_name<<endl;              }           }          closedir(dir);            system("pause");          return 0;      }  

下面我挂出Python代码吧,python对文件的操作真的是好简单啊,小编突然好喜欢python了

#!/usr/bin/pythonimport cv2import numpy as npimport osprint os.getcwd()def main():    i=1    while i<=27:        str1=str(i)        path="F:\\img\\"+  str1.zfill(4)+'.jpg'        print path        img=cv2.imread(path)        #print img.shape        cv2.imshow("xiaorun",img)        cv2.waitKey(400)        i=i+1if __name__=='__main__':    main()
原创粉丝点击