概述
目录
引言
无论在深度学习还是其他图像处理中都需要固定大小的图像作为输入,本文主要使用cv2.resize批量重新设置图像大小。可以批量将手机拍的照片或者分辨率大的图像重新设置到自己固定的大小,例如4000*3000设置到1920*1080,512*512设置到128*128,具体的大小可以自定义。
上传两个程序,程序1可以使用编辑器打开运行;程序2可以直接在命令行输入参数运行。
主要函数部分
重新设置图像大小,1其中x,y就是自定义的长和宽
im_resize = cv2.resize(im, (x, y))
保存图像,并设置保存参数,包括质量、dpi的x和y值
im_dpi.save(save_path + im_name[i], quality=quality, dpi=(dpi_x, dpi_y))
程序介绍
程序1:
功能:在编辑器内运行,批量resize图像,并另保存。
函数输入:image_path=image_path, save_path=save_path, x=1920, y=1080, quality=95, dpi_x=72, dpi_y=72
对应:输入图像路径、输出图像路径、x,y,质量、dpi的x值,dpi的y值;若没有输入某些参数,将按默认值运行
示例:
resize(image_path=image_path, save_path=save_path, x=1920, y=1080, quality=95, dpi_x=72, dpi_y=72)
代码:
import cv2
import os
from PIL import Image
image_path = './image/' # 图像输入路径
save_path = './resize/' # 图像输出路径
def resize(image_path, save_path, x=256, y=256, quality=95, dpi_x=72.0, dpi_y=72.0):
# 设置图像的输入、输出、需要resize的大小,质量、和dpi值
im_name = os.listdir(image_path)
paths = []
for name in im_name:
path = os.path.join(image_path, name)
paths += [path]
for i, path in enumerate(paths):
im = cv2.imread(path) # 读取图像
print("Extract %s image, %d of %d images" % (im_name[i], i + 1, len(paths)))
im_resize = cv2.resize(im, (x, y)) # resize图像大小
im_dpi = Image.fromarray(cv2.cvtColor(im_resize, cv2.COLOR_BGR2RGB))
im_dpi.save(save_path + im_name[i], quality=quality, dpi=(dpi_x, dpi_y)) # 保存
resize(image_path=image_path, save_path=save_path, x=1920, y=1080, quality=95, dpi_x=72, dpi_y=72)
运行结果,以其中一个图像为例:
程序2
功能:使用命令行运行,批量resize图像,并另保存。
函数输入:image_path=image_path, save_path=save_path, x=1920, y=1080, quality=95, dpi_x=72, dpi_y=72
对应:输入图像路径、输出图像路径、x,y,质量、dpi的x值,dpi的y值;若没有输入某些参数,将按默认值运行。
示例:在命令行输入
python image_resize_args.py --image_path ./image/ --save_path ./resize/ -x 1024 -y 720 -quality 95 -dpi_x 72 -dpi_y 72
代码:
import cv2
import os
from PIL import Image
import argparse as ap
# Get the path of the training set
parser = ap.ArgumentParser()
parser.add_argument("--image_path", help='输入图片来源路径', required="True")
parser.add_argument("--save_path", help='输入图片存储路径', required="True")
parser.add_argument("-x", type=int, help='输入图像的长度', default=256, required="True")
parser.add_argument("-y", type=int, default=256, help='输入图像的宽度', required="True")
parser.add_argument("-quality", type=int, default=95, help='输入图像存储质量', required = "True")
parser.add_argument("-dpi_x", type=int, default=72, help='输入图像dpi_x', required="True")
parser.add_argument("-dpi_y", type=int, default=72, help='输入图像dpi_y', required="True")
args = vars(parser.parse_args())
image_path = args["image_path"]
save_path = args["save_path"]
x = args["x"]
y = args["y"]
quality = args["quality"]
dpi_x = args["dpi_x"]
dpi_y = args["dpi_y"]
def resize(image_path, save_path, x=256, y=256, quality=95, dpi_x=72, dpi_y=72):
im_name = os.listdir(image_path)
paths = []
for name in im_name:
path = os.path.join(image_path, name)
paths += [path]
for i, path in enumerate(paths):
im = cv2.imread(path)
print("Extract %s image, %d of %d images" % (im_name[i], i + 1, len(paths)))
im_resize = cv2.resize(im, (x, y))
im_dpi = Image.fromarray(cv2.cvtColor(im_resize, cv2.COLOR_BGR2RGB))
im_dpi.save(save_path + im_name[i], quality=quality, dpi=(dpi_x, dpi_y))
print(image_path, save_path, x, y, quality, dpi_x, dpi_y)
print(type(image_path), type(save_path), type(x), type(y), type(quality), type(dpi_x), type(dpi_y))
resize(image_path=image_path, save_path=save_path, x=x, y=y, quality=quality, dpi_x=dpi_x, dpi_y=dpi_y)
运行结果,以其中一个图像为例:
注意事项
首先要安装需要的库,其次注意在命令行输入时不要多输入、漏输入空格。
最后
以上就是大力烧鹅为你收集整理的python opencv压缩图片大小_python,opencv和PIL,resize图像大小,可以批处理的全部内容,希望文章能够帮你解决python opencv压缩图片大小_python,opencv和PIL,resize图像大小,可以批处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复