欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python與C++如何遍歷文件夾下的所有圖片

這篇文章主要介紹了Python與C++如何遍歷文件夾下的所有圖片,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供滄源網(wǎng)站建設、滄源做網(wǎng)站、滄源網(wǎng)站設計、滄源網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、滄源企業(yè)網(wǎng)站模板建站服務,十多年滄源做網(wǎng)站經驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

Python遍歷

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

# encoding: UTF-8
import glob as gb
import cv2

#Returns a list of all folders with participant numbers
img_path = gb.glob("numbers\\*.jpg") 
for path in img_path:
  img = cv2.imread(path) 
  cv2.imshow('img',img)
  cv2.waitKey(1000)

C++遍歷

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

OpenCV自帶一個函數(shù)glob()可以遍歷文件,如果用這個函數(shù)的話,遍歷文件也是非常簡單的。這個函數(shù)非常強大,人臉識別的時候用這個函數(shù)應該會比用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. 自己寫一個遍歷文件夾的函數(shù)

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

#include<opencv2\opencv.hpp>
#include<iostream>
#include <windows.h> // for windows systems

using 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庫來實現(xiàn)這一功能也是比較簡潔的。為了用這個我還專門完全編譯了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);
    }
  }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python與C++如何遍歷文件夾下的所有圖片”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

網(wǎng)頁題目:Python與C++如何遍歷文件夾下的所有圖片
瀏覽路徑:http://aaarwkj.com/article36/iijppg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)頁設計公司、關鍵詞優(yōu)化全網(wǎng)營銷推廣、企業(yè)建站、品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
免费国产三级在线观看| 国产精品自偷自偷自偷| 麻豆一区二区人妻网站| 日韩一区二区三精品| 国产超大超粗超爽视频| 国产黄色片网站在线看| 中文字幕变态另类一区二区| 国产中文字幕精品在线| 国产成人公开免费视频| 亚洲欧美日韩颜射极品| 久久精品夜夜夜夜夜久久| 亚洲人成免费在线观看| 欧美日韩国产综合一区二区| 日本福利一区二区三区| 打开网址国语一级黄色片| 中文字幕久久熟女蜜桃| 女人高潮被爽到呻吟在线| 天天干夜夜泡天天操| 亚洲国产日韩精品一区二| 91精品国内手机在线高清| 中文字幕乱码亚洲中文在线| 中文字幕精品一区二区介绍| 日本一二不卡高清在线视频| av欧美激情在线观看| 欧美亚洲国产精品久久久| 久久精品91久久久| 欧美国产日韩激情在线| 丁香色婷婷国产精品视频| av剧情免费在线观看| 久久成人综合亚洲精品欧美| 欧美日韩在线视频第三区| 中文字幕在线一级色视频| 免费观看久久黄色大片| 中国日本欧美最黄大片| 日韩美女毛片啪啪响| 97视频在线观看网站| 亚洲大尺码在线视频香蕉| 欧美曰韩国内精品中文| 国产精品亚洲av三区国产毛片| 91亚洲熟妇国产熟妇肥婆| 人妖系列中文字幕欧美系列|