批量进行图片处理,把图形处理成1024*1024,超过的裁剪,不足的用0补全

下面展示一些 代码

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 28 22:59:37 2021

@author: dell
"""
# !/usr/bin/python
# -*- coding:utf-8 -*-


import os
import cv2
outer_path = 'D:/11/H30000/mightysat/+X/0.28/'   # 路径不能包含中文
#outer_path = 'C:/Users/Lenovo/Desktop/xx/'   # 路径不能包含中文
folderlist = os.listdir(outer_path)  # 列举文件夹

for folder in folderlist:
    inner_path = os.path.join(outer_path, folder)
    total_num_folder = len(folderlist)  # 文件夹的总数
    print('total have %d folders' % (total_num_folder))  # 打印文件夹的总数

    filelist = os.listdir(inner_path)  # 列举图片
    i = 1
    for item in filelist:
        total_num_file = len(filelist)  # 单个文件夹内图片的总数
        if item.endswith('.png'):
            src = os.path.join(os.path.abspath(inner_path), item)  # 原图的地址
            image_path = src
            # 使用pillow读取图片,获取图片的宽和高
            img = cv2.imread(image_path)
            sp = img.shape
           # print(sp)
            img_width = sp[1]  # 图片宽度
            img_height = sp[0]  # 图片高度
           # print("width -> {}, height -> {}".format(img_width, img_height))
            if img_width > 1024:
                left = (img_width - 1024) // 2
               # print(left)
                right = left + 1024
                #print(right)
            if img_height > 700:
                upper = (img_height - 700) // 2
                lower = upper + 700
            else:
                upper = 0
                lower = 700
               # print(upper, lower)
            crop = img[upper:lower, left:right]  # (left, upper, right, lower)
            constant = cv2.copyMakeBorder(crop, 162, 162, 0, 0, cv2.BORDER_CONSTANT, value=(0, 0, 0))
            # cv2.imshow('constant',constant),cv2.waitKey(0),cv2.destroyAllWindows()
            dst = os.path.join(os.path.abspath(inner_path), '000' + str(
                i) + '.png')  # 新图的地址(这里可以把str(folder) + '_' + str(i) + '.jpg'改成你想改的名称)
            try:
                os.rename(src, dst)
                #print('converting %s to %s ...' % (src, dst))
                i += 1
            except:
                continue
            cv2.imwrite(dst, constant)
    print('total %d to rename & converted %d jpgs' % (total_num_file, i))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值