python批量修改图片尺寸(含多个文件夹)
先看看文件夹组成

可以直接套用一下代码,不难理解
# -*- coding: utf-8 -*-
"""
Created on Mon May 25 09:27:27 2020@author: 吴
"""# -*- coding: utf-8 -*-
import cv2
import matplotlib.pyplot as plt
import os
import re
import sys
from PIL import Image
import string
import numpy as npPATH = 'testImage' #这里路径自己定,注意要是直接从我的电脑复制路径要加 r'****'
#我这里是相对路径,亲测中文路径也可以def resizeImage(file,NoResize):image = cv2.imread(file,cv2.IMREAD_COLOR)#如果type(image) == 'NoneType',会报错,导致程序中断,所以这里先跳过这些图片,#并记录下来,结束程序后手动修改(删除)if image is None:NoResize += [str(file)]else:resizeImg = cv2.resize(image,(512,384))cv2.imwrite(file,resizeImg)cv2.waitKey(100)def resizeAll(root):#待修改文件夹fileList = os.listdir(root)#输出文件夹中包含的文件 # print("修改前:"+str(fileList))#得到进程当前工作目录currentpath = os.getcwd() #将当前工作目录修改为待修改文件夹的位置 os.chdir(root)NoResize = [] #记录没被修改的图片for file in fileList: #遍历文件夹中所有文件file = str(file)resizeImage(file,NoResize)print("---------------------------------------------------")os.chdir(currentpath) #改回程序运行前的工作目录sys.stdin.flush() #刷新print('没别修改的图片: ',NoResize)if __name__=="__main__":#子文件夹for childPATH in os.listdir(PATH):#子文件夹路径childPATH = PATH + '/'+ str(childPATH)# print(childPATH)resizeAll(childPATH)print('------修改图片大小全部完成-_-')
如果报错类似
OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3720: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
有很多因素导致的,解决方法也有很多,比如重装opencv,获得WIN10最高全选等,但这些我试了没走通,所以以下只是我个人的方法-_-
1.路径问题----
以上代码中
PATH 含有中文,opencv有时候会报错,所以将文件夹名字改成英文即可
注意:子文件夹也要改!
例如:
我把这个文件夹放到代码所在文件夹,就可以用相对路径了,

PATH = 'testImage'
OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3720: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize’
关于这个报错我问题,我整了一天都没搞定,最后找了个妥协的方法:
就是这段代码
def resizeImage(file,NoResize):image = cv2.imread(file,cv2.IMREAD_COLOR)#如果type(image) == 'NoneType',会报错,导致程序中断,所以这里先跳过这些图片,#并记录下来,结束程序后手动修改(删除)if image is None:NoResize += [str(file)]else:resizeImg = cv2.resize(image,(512,384))cv2.imwrite(file,resizeImg)cv2.waitKey(100)
出现这个报错的原因就是我某些图片的属性是NoneType
可以试一下以下代码
print(type(image))
# 如果打印出
#说明你的问题和我一样,直接套用我上面代码,打印出没别修改的图片再手动删除即可
---------更新---------------
一个python程序解决[更改图片名称_转换图片成JPG格式_修改图片尺寸]
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
