批量修改图片大小
import os
import cv2
import numpy as np
def cv_imread(filePath):
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
return cv_img
def resize_img(DATADIR, data_k, img_size):
w = img_size[0]
h = img_size[1]
path = os.path.join(DATADIR, data_k)
img_list = os.listdir(path)
print(path)
for i in img_list:
img_array = cv_imread(path + '/' + i)
print(path + '/' + i)
new_array = cv2.resize(img_array, (w, h), interpolation=cv2.INTER_CUBIC)
img_name = str(i)
'''生成图片存储的目标路径'''
save_path = path + '_new/'
if os.path.exists(save_path):
print(i)
'''调用cv.2的imwrite函数保存图片'''
save_img=save_path+img_name
'''带有中文名称用imencode保存'''
cv2.imencode('.jpg', new_array)[1].tofile(save_img)
else:
os.mkdir(save_path)
save_img = save_path + img_name
cv2.imencode('.jpg', new_array)[1].tofile(save_img)
if __name__ == '__main__':
DATADIR = "C:/Users/Desktop/img/"
data_k = 'img'
img_size = [1000, 1000]
resize_img(DATADIR, data_k, img_size)
遇到问题
- opencv读取带有中文的图片时会报错,这里单独写了cv_imread()函数进行处理。如果文件读取路径中不含中文,调用cv2.imread()。
- 保存图像时,若也还有中文,需要使用cv2.imencode()保存,同样,若保存路劲不含中文,调用cv2.imwrite()。