'''
author:tonyzhang
function:transfrom img to size H W and save
'''
import cv2
import os
import glob
dir_path = "F:/SPAQImage/*.jpg"
save_path = "F:/SPAQImage224/"
for i in glob.glob(dir_path):
img = cv2.imread(i)
print(i)
img = cv2.resize(img,(224,224))
cv2.imwrite(os.path.join(save_path,os.path.basename(i)),img)
上面的单线程版本,太慢了
下面搞了个多线程,快了很多,cpu利用率拉满
'''
author:tonyzhang
function:transfrom img to size H W and save
'''
import cv2
import os
import glob
import concurrent.futures
from threading import Thread
num_threads = 10
dir_path = "T:/PARA/img_all/"
save_path = "T:/PARA/img_all2/"
def process_image(filelist):
for filename in filelist:
print(filename)
file = os.path.join(dir_path,filename)
img = cv2.imread(file)
img = cv2.resize(img,(224,224))
cv2.imwrite(os.path.join(save_path,filename),img)
def multi_thread_process(dir_path):
if num_threads == 1:
process_image(os.listdir(dir_path))
return
filelist_total = os.listdir(dir_path)
filenum = len(filelist_total)
filenum_each_thread = int(filenum/num_threads)
thread_list = []
for i in range(num_threads-1):
thread_list.append(Thread(target=process_image, args=(filelist_total[i*filenum_each_thread : (i+1)*filenum_each_thread],)))
thread_list.append(Thread(target=process_image, args=(filelist_total[(num_threads-1)*filenum_each_thread :],)))
for th in thread_list:
th.start()
for th in thread_list:
th.join()
multi_thread_process(dir_path)