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格式_修改图片尺寸]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部