使用Python将图片缩放到指定像素-shi-yong-python-jiang-tu-pian-suo-fang-dao-zhi-ding-xiang-su

这篇博客介绍了一种使用Python和OpenCV库快速批量处理图片的方法,将图片缩放到指定像素大小,如512*512。作者提供了一个简单的脚本,通过argparse解析命令行参数,实现一键式图片尺寸调整。此外,还分享了一个自动处理脚本,可以遍历指定目录下的所有图片并进行处理,输出到另一个目录,方便进行大规模图像预处理工作。
摘要由CSDN通过智能技术生成

使用Python将图片缩放到指定像素

​ 在使用python进行图像处理或使用一些深度学习的模型的时候,对图片的像素大小有指定要求,例如我最近使用的一个模型就要求输入图像的像素必须为512*512,使用windos自带的画图工具或者ps等专业工具是可以进行处理的,但太慢了,也太麻烦了,使用python脚本就可以实现一键智能化处理

​ 直接贴源码吧,使用的是opencv的库,很简单:

import argparse
import os
import cv2
import sys


# 定义图像缩放函数
def process_image(img, min_side):
    size = img.shape
    h, w = size[0], size[1]
    # 长边缩放为min_side
    scale = max(w, h) / float(min_side)
    new_w, new_h = int(w / scale), int(h / scale)
    resize_img = cv2.resize(img, (new_w, new_h))
    # 填充至min_side * min_side
    if new_w % 2 != 0 and new_h % 2 == 0:
        top, bottom, left, right = (min_side - new_h) / 2, (min_side - new_h) / 2, (min_side - new_w) / 2 + 1, (
                min_side - new_w) / 2
    elif new_h % 2 != 0 and new_w % 2 == 0:
        top, bottom, left, right = (min_side - new_h) / 2 + 1, (min_side - new_h) / 2, (min_side - new_w) / 2, (
                min_side - new_w) / 2
    elif new_h % 2 == 0 and new_w % 2 == 0:
        top, bottom, left, right = (min_side - new_h) / 2, (min_side - new_h) / 2, (min_side - new_w) / 2, (
                min_side - new_w) / 2
    else:
        top, bottom, left, right = (min_side - new_h) / 2 + 1, (min_side - new_h) / 2, (min_side - new_w) / 2 + 1, (
                min_side - new_w) / 2

    pad_img = cv2.copyMakeBorder(resize_img, int(top), int(bottom), int(left), int(right), cv2.BORDER_CONSTANT,
                                 value=[255, 255, 255])  # 从图像边界向上,下,左,右扩的像素数目
    return pad_img


def run(src='test.jpg',
        dst='input.png',
        size=512):
    im = cv2.imread(src)
    image_new = process_image(im, size)
    cv2.imwrite(dst, image_new)


def parse_opt():
    parser = argparse.ArgumentParser()
    parser.add_argument('--src', type=str, default='test.jpg', help='input')
    parser.add_argument('--dst', type=str, default='input.png', help='output')
    parser.add_argument('--size', type=int, default=512, help='picture size')
    opt = parser.parse_args()
    return opt


def main(opt):
    run(**vars(opt))


if __name__ == "__main__":
    opt = parse_opt()
    main(opt)

使用时可以直接通过

python.py --src 待转换图像 --dst 输出路径和文件名 --size 尺寸

来进行使用。

后来为了方便我还弄了一个自动处理的脚本,运行该脚本后,可以自动把input目录下的图片进行处理,之后放到output目录下。
使用自动处理脚本时需新建process()函数对缩放后的图像进行处理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CpCuqtvO-1633782732290)(/upload/2021/10/image-53c457b5012e4706a5fa658a4f0f22aa.png)]
自动处理python脚本下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值