1. 程式人生 > 程式設計 >python或C++讀取指定資料夾下的所有圖片

python或C++讀取指定資料夾下的所有圖片

本文例項為大家分享了python或C++讀取指定資料夾下的所有圖片,供大家參考,具體內容如下

1.python讀取指定資料夾下的所有圖片路徑和圖片檔名

import cv2
from os import walk,path

def get_fileNames(rootdir):
 data=[]
 prefix = []
 for root,dirs,files in walk(rootdir,topdown=True):
  for name in files:
   pre,ending = path.splitext(name)
   if ending != ".jpg" and ending != ".jepg" and ending != ".png":
    continue
   else:
    data.append(path.join(root,name))
    prefix.append(pre)
 return data,prefix



if __name__ == '__main__':

 images,preifx = get_fileNames('/home/yasin/target_pics') #得到指定資料夾下的圖片,例如.jpg,.jepg或.png等,可根據上述程式碼更改
 for i in range(len(images)):
  img = cv2.imread(images[i])
  w = img.shape[1]
  l = img.shape[0]
  img_res = cv2.resize(img,(w*2,l*2)) #對圖片操作後
  cv2.imwrite("./resized_wb/{}.jpg".format(preifx[i]),img_res)

2.C++得到指定資料夾下的所有圖片並返回讀取Mat值

#include <stdio.h>
#include <highgui.h>
#include <opencv2/opencv.hpp>
#include <cv.h>

using namespace std;
using namespace cv;


//讀取指定檔案下的所有圖片
vector<Mat> read_images_in_folder(cv::String pattern)
{
 vector<cv::String> fn;
 glob(pattern,fn,false);

 vector<Mat> images;
 // vector<cv::String>&prefix //
 size_t count = fn.size(); //number of png files in images folder
 for (size_t i = 0; i < count; i++)
 {
  // prefix.push_back(fn[i].substr(20,4)); // 此處可以得到檔名的子字串,可以獲取圖片字首
 images.push_back(imread(fn[i])); //直讀取圖片並返回Mat型別
 //imshow("img",imread(fn[i]));
 //waitKey(1000);
 }
 return images;
}

int main()
{

 cv::String pattern = "./*.jpg";

 //遍歷得到目標檔案中所有的.jpg檔案
 vector<Mat> images = read_images_in_folder(pattern);

 for (int i = 0; i < images.size(); i++)
 {
 imshow("img",images[i]);
 waitKey(1000);
 }
 // system("pause");
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。