亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

Python與C++ 遍歷文件夾下的所有圖片實現代碼

2020-01-26 14:06:43
字體:
來源:轉載
供稿:網友

 Pyhton與C++ 遍歷文件夾下的所有圖片實現代碼

前言

雖然本文說的是遍歷圖片,但是遍歷其他文件也是可以的。

在進行圖像處理的時候,大部分時候只需要處理單張圖片。但是一旦把圖像處理和機器學習相結合,或者做一些稍大一些的任務的時候,常常需要處理好多圖片。而這里面,一個最基本的問題就是如何遍歷這些圖片。

用OpenCV做過人臉識別的人應該知道,那個項目中并沒有進行圖片的遍歷,而是用了一種輔助方案,生成了一個包含所有圖片路徑的文件at.txt,然后通過這個路徑來讀取所有圖片。而且這個輔助文件不僅包含了圖片的路徑,還包含了圖片對應的標簽。所以在進行訓練的時候直接通過這個輔助文件來讀取訓練用的圖片和標簽。

其實如果去看看教程,會發現這個at.txt的生成是通過Python代碼來實現。所以今天就來看一下如何用C++來實現文件夾下所有圖片的遍歷。

當然在此之前還是先給出Python遍歷的代碼,以備后用。

Python遍歷

在之前的數獨項目中,進行圖像處理的時候用到了遍歷文件夾下所有的圖片。主要是利用glob模塊。glob是python自己帶的一個文件操作相關模塊,內容不多,可以用它查找符合自己目的的文件。

# encoding: UTF-8import glob as gbimport cv2#Returns a list of all folders with participant numbersimg_path = gb.glob("numbers//*.jpg") for path in img_path:  img = cv2.imread(path)   cv2.imshow('img',img)  cv2.waitKey(1000)

C++遍歷

1. opencv自帶函數glob()遍歷

OpenCV自帶一個函數glob()可以遍歷文件,如果用這個函數的話,遍歷文件也是非常簡單的。這個函數非常強大,人臉識別的時候用這個函數應該會比用at.txt更加方便。一個參考示例如下。

#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;vector<Mat> read_images_in_folder(cv::String pattern);int main(){  cv::String pattern = "G:/temp_picture/*.jpg";  vector<Mat> images = read_images_in_folder(pattern);  return 0;  }vector<Mat> read_images_in_folder(cv::String pattern){  vector<cv::String> fn;  glob(pattern, fn, false);  vector<Mat> images;  size_t count = fn.size(); //number of png files in images folder  for (size_t i = 0; i < count; i++)  {    images.push_back(imread(fn[i]));    imshow("img", imread(fn[i]));    waitKey(1000);  }  return images;}

需要注意的是,這里的路徑和模式都用的是cv::String。

2. 自己寫一個遍歷文件夾的函數

在windows下,沒有dirent.h可用,但是可以根據windows.h自己寫一個遍歷函數。這就有點像是上面的glob的原理和實現了。

#include<opencv2/opencv.hpp>#include<iostream>#include <windows.h> // for windows systemsusing namespace std;using namespace cv;void read_files(std::vector<string> &filepaths,std::vector<string> &filenames, const string &directory);int main(){  string folder = "G:/temp_picture/";  vector<string> filepaths,filenames;  read_files(filepaths,filenames, folder);  for (size_t i = 0; i < filepaths.size(); ++i)  {    //Mat src = imread(filepaths[i]);    Mat src = imread(folder + filenames[i]);    if (!src.data)      cerr << "Problem loading image!!!" << endl;    imshow(filenames[i], src);    waitKey(1000);  }  return 0;}void read_files(std::vector<string> &filepaths, std::vector<string> &filenames, const string &directory){  HANDLE dir;  WIN32_FIND_DATA file_data;  if ((dir = FindFirstFile((directory + "/*").c_str(), &file_data)) == INVALID_HANDLE_VALUE)    return; /* No files found */  do {    const string file_name = file_data.cFileName;    const string file_path = directory + "/" + file_name;    const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;    if (file_name[0] == '.')      continue;    if (is_directory)      continue;    filepaths.push_back(file_path);    filenames.push_back(file_name);  } while (FindNextFile(dir, &file_data));  FindClose(dir);} 

3. 基于Boost

如果電腦上配置了boost庫,用boost庫來實現這一功能也是比較簡潔的。為了用這個我還專門完全編譯了Boost。

然而只用到了filesystem。

#include <boost/filesystem.hpp>#include<iostream>#include<opencv2/opencv.hpp>using namespace cv;using namespace std;using namespace boost::filesystem;void readFilenamesBoost(vector<string> &filenames, const string &folder);int main(){  string folder = "G:/temp_picture/";  vector<string> filenames;  readFilenamesBoost(filenames, folder);  for (size_t i = 0; i < filenames.size(); ++i)  {    Mat src = imread(folder + filenames[i]);    if (!src.data)      cerr << "Problem loading image!!!" << endl;    imshow("img", src);    waitKey(1000);  }  return 0;}void readFilenamesBoost(vector<string> &filenames, const string &folder){  path directory(folder);  directory_iterator itr(directory), end_itr;  string current_file = itr->path().string();  for (; itr != end_itr; ++itr)  {    if (is_regular_file(itr->path()))    {      string filename = itr->path().filename().string(); // returns just filename      filenames.push_back(filename);    }  }}

各種方法都記錄在這里,以便以后用的時候查找。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美人在线视频| 亚洲国产成人久久综合| 亚洲一区二区久久久| 久久国内精品一国内精品| 午夜精品一区二区三区在线视频| 亚洲综合在线小说| 色综合91久久精品中文字幕| 国产激情综合五月久久| 欧美专区国产专区| 欧美在线性爱视频| 亚洲第一av网站| 成人两性免费视频| 欧美日韩亚洲精品内裤| 日韩欧美成人网| 久久人人97超碰精品888| 国内免费久久久久久久久久久| 欧美午夜电影在线| 日韩69视频在线观看| 日韩禁在线播放| 日韩av免费观影| 91网站在线免费观看| 国产精品大片wwwwww| 国产黑人绿帽在线第一区| 日韩精品极品毛片系列视频| 国产成人一区三区| 日韩免费在线视频| 正在播放欧美视频| 国产精品aaa| 蜜月aⅴ免费一区二区三区| 久久免费成人精品视频| 精品综合久久久久久97| 久久偷看各类女兵18女厕嘘嘘| 欧美日韩国产综合新一区| 欧美亚洲激情在线| 伊人久久久久久久久久| 亚洲精品美女免费| 亚洲性日韩精品一区二区| 青草青草久热精品视频在线观看| 欧美成年人在线观看| 日本中文字幕不卡免费| 久久精品99久久久久久久久| 国产狼人综合免费视频| 亚洲国产精品悠悠久久琪琪| 色综合天天综合网国产成人网| 亚洲精品久久久久中文字幕二区| 久久久999精品视频| 中文字幕亚洲一区在线观看| 久久久久久久久久久亚洲| 国产91在线播放精品91| 久久av资源网站| 成人一区二区电影| 亚洲男人av在线| 亚洲欧美日韩第一区| 国产精品91视频| 91av视频在线观看| 成人网中文字幕| 欧美亚洲国产日本| 亚洲精品99久久久久| 国产精品女主播| 久久琪琪电影院| 国产精品亚洲片夜色在线| 91美女片黄在线观| 97视频在线观看成人| 久久精品一本久久99精品| 国产精品成人一区| 成年人精品视频| 欧美午夜激情在线| 美女扒开尿口让男人操亚洲视频网站| 久久亚洲影音av资源网| 国产日韩精品入口| 成人黄色片在线| 91精品视频在线免费观看| 97视频在线观看网址| 欧美高跟鞋交xxxxxhd| 性日韩欧美在线视频| 狠狠色狠狠色综合日日五| 亚洲人成电影在线播放| 国模吧一区二区| 午夜精品久久久久久久久久久久| 中文欧美日本在线资源| 欧美大尺度在线观看| 国产丝袜一区二区三区免费视频| 欧美一级淫片videoshd| 俺也去精品视频在线观看| 亚洲影视中文字幕| 国产精品丝袜久久久久久不卡| 亚洲xxxx妇黄裸体| 久久亚洲综合国产精品99麻豆精品福利| 国产午夜精品全部视频在线播放| 欧美日韩免费观看中文| 日韩av在线网站| 国产日韩在线视频| 欧美一区第一页| 日韩精品中文字幕有码专区| 4438全国成人免费| 国产精品久久久久久久av大片| 国产盗摄xxxx视频xxx69| 国产欧美日韩精品专区| 国产美女久久精品香蕉69| 亚洲美女在线看| 国产精品露脸av在线| 日韩av一区二区在线观看| 日韩精品视频三区| 91亚洲精品久久久久久久久久久久| 国产精品日韩专区| 国产精品免费在线免费| 青青a在线精品免费观看| 97超级碰碰人国产在线观看| 国产婷婷成人久久av免费高清| 久久天天躁狠狠躁夜夜躁| 伊人一区二区三区久久精品| 欧美性xxxxxxxxx| 欧美黑人性猛交| 欧美视频二区36p| 欧美激情综合色| 亚洲欧美日韩视频一区| 欧美激情视频一区二区三区不卡| 欧美精品福利在线| 66m—66摸成人免费视频| 日本在线精品视频| 国产精品999| 久久久成人的性感天堂| 国产精品激情av在线播放| 中文字幕不卡av| 欧美日本啪啪无遮挡网站| 国外色69视频在线观看| 国产精品美女免费视频| 欧美激情按摩在线| 亚洲韩国青草视频| 欧美性精品220| 国内精品久久影院| 久久视频精品在线| 伊人久久精品视频| 日韩av在线最新| 一本久久综合亚洲鲁鲁| 最近2019中文字幕第三页视频| 亚洲性生活视频在线观看| 精品国偷自产在线视频99| 久久久久久久久国产精品| 欧美激情一区二区三级高清视频| 亚洲精品在线观看www| 日韩av网址在线观看| 成人国产精品色哟哟| 日韩欧美一区二区三区久久| 色伦专区97中文字幕| 亚洲 日韩 国产第一| 久久久久久国产免费| 91手机视频在线观看| 亚洲综合社区网| 日韩中文av在线| xxxxx成人.com| 91网在线免费观看| 久久91精品国产| 亚洲直播在线一区| 亚洲免费av网址| 久久久久久久久国产精品| 欧美激情在线播放| 亚洲欧美国内爽妇网| 福利二区91精品bt7086| 一区二区亚洲欧洲国产日韩| 国产一区二区丝袜| xxx成人少妇69| 日韩在线视频网站| 久久精品国产亚洲|