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

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://www.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)化
久久久国产精品久久久| 亚洲成人日韩国产欧美| 日韩精品熟女中文字幕| 色哟国产传媒视频在线观看| 欧美一区二区三在线| 精品人妻中文字幕在线| 久久精品久久黄色片看看| 国产亚洲一区二区三区成人| 18禁黄网站免费观看在线 | 午夜免费成人在线视频| 欧美精品一区二区三区乱码| 女同蝴蝶在线看完整版| 最新免费观看男女啪啪视频| 久久精品国产亚洲av亚| 哈昂~不要啊在线观看| 久久婷婷综合激情亚洲| 日本不卡视频二区三区| 日韩欧美亚洲一区二区| 日韩精品日本道欧美黄片| av色狠狠一区二区三区| 国产日韩综合精品一区| 美女后入式在线观看| 亚洲免费成人高清电影| 国产一区二区三区性色| 一区二区三区不卡中文字幕| 亚洲国产精品激情在线| 免费观看中国性生活片| 91薄丝激情在线播放| 欧美亚洲国产另类第一页| 亚洲成人午夜免费在线观看 | 丰满人妻侵犯中文字幕| 成人av久久一区二区三区| 日韩一二三区欧美四五区新| 亚洲国产自拍偷拍视频| 青青草青青草在线观看视频| 一区二区在线日韩欧美| 日韩av有码在线播放| 不卡视频在线免费观看| av在线免费观看青青草原| 成年人免费在线观看国产| 国产三级精品大乳人妇|