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

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)化
国产一区精品在线免费看| 伊人蕉影院久亚洲高清| 久久99精品久久久国产| 亚洲精品成人一区不卡| 91美女人妻精品久久| 欧美欧美欧美欧美在线 | 亚洲中文字幕少妇熟女美妇| 91精品免费播放在线观看| 亚洲一区二区三区经典精品| 在线午夜免费视频观看| 亚洲新大香蕉视频在线播放| 国产黄色片网站在线观看| 亚洲欧洲一区二区免费| 我的农村中年激情熟妇| 成人av在线播放亚洲| 97视频网站在线观看| 公交车上没穿内裤被插高潮不断| 成人综合影视中文字幕| 91午夜精品亚洲一区二区三区| 欧美人妻精品一区二区| 国产精品亚洲一区二区在| 欧美日韩精品在线二区| 国产精品综合久久蜜臀av| 日韩在线视频网站不卡| 日韩精品中文字幕有码在线| 欧美在线日韩一区二区| 国产亚洲精品第一最新| 亚洲综合五月天色婷婷| 国产有码日产一区在线观看| 国产精品一区二区啪啪| 日韩精品极品在线视频观看免费| 亚洲欧美激情专区在线| 尤物视频在线观看羞羞| 女人裸体网站无遮挡午夜| 成人在线视频国产自拍| 成人激情视频在线观看| 日韩无码一区二区视频| 女人被爽到高潮呻吟免费看| 中文字幕国产精品综合| 中文字幕在线看精品乱码| 日韩美女后入式在线视频|