如何用幾行程式碼讀取目錄下所有的圖片

badwell發表於2017-07-04

該程式同時也解決opencv中文路徑,圖片不能正常讀取的問題。

最近寫了一個,爬去了較多的妹子資源,但是需要手動的一個一個的去瀏覽圖片,閒太麻煩了,能不能製作一個軟體,能直接讀取某目錄下的所有圖片呢?好,說幹就幹吧。

首先需要引入一些常用的庫:

import cv2
import numpy as np
from matplotlib import pyplot as plt
import os
import time

接下來,就是所有的程式碼量了,直接上乾貨吧

ph = r"E:\image\小清新"

def list_dir(path):
    for f in os.listdir(path):
        f= path+ r"\\"+f
        if os.path.isfile(f):
            pp = str(f)
            print("file is:"+ str(f))
            if (pp.find("png") != -1) or (pp.find("jpg") != -1):
                #cv2.namedWindow("img",cv2.WINDOW_NORMAL)
                print("will to read file:" + str(f))
                #img = cv2.imread(f)
                img = cv2.imdecode(np.fromfile(f,dtype=np.uint8),-1)   //說明python2的操作在這裡不同,需要進行修改
                if img is None:
                    continue
                else:
                    img = cv2.resize(img,(1024,768))
                cv2.imshow("img",img)
                cv2.waitKey(20)
        elif os.path.isdir(f):
            print("find dir:" + str(f))
            list_dir(f)
        else:
            #list_dir(f)
            print("find unknow:" + str(f))
    cv2.destroyAllWindows()
    print("list_dir end")
    
list_dir(ph)
print("all end")

python2和python3需要進行修改的地方:

python3版本
# python3版本
# imread

path_file = "sample"
img = cv2.imdecode(np.fromfile(path_file,dtype=np.uint8),-1)

#imwrite
_path = "sample"
cv2.imencode('.jpg',img)[1].tofile(_path)
python2版本
# python 2版本
import cv2
import sys
reload(sys)
sys.setdefaultencoding('u8')
path_file = u"sample"
img = cv2.imread(path_file.decode('u8').encode('gbk'),-1)

好了,大功告成,試試只用幾行程式碼就搞定圖片瀏覽器的快感吧。

好了,如果大家遇到問題,不能執行的話,請加群:98556420,提出疑問吧。

相關文章