图片裁剪与等比缩小

21年9月21日——图片裁剪与等比缩小

做项目的时候需要太欧证图片大小,原图片是46082456,目标是要调整到224224。因为样本中图片的空白占了比较多的位置,所以我的思路是先裁剪再等比缩小。

单独图片的裁剪

import cv2

img = cv2.imread('E:/test_input.jpg')
print(img.shape)
cropped = img[485:2920, 818:3676]
cv2.imwrite('E:/test_output.jpg', cropped)

imread和imwrite的操作需要谨记。

批量图片的裁剪

import cv2
import numpy as np
import os


def img_cut(input_dir, ouput_dir):
    img = cv2.imread(input_dir)
    print(img.shape)
    cropped = img[331:3068, 837:3574]
    cv2.imwrite(ouput_dir, cropped)


dataset_dir = 'E:/dataset/test/4'
output_dir = 'E:/zhongjian/test/4'

# 获得需要转化的图片路径并生成目标路径
image_filenames = [(os.path.join(dataset_dir, x), os.path.join(output_dir, x))
                   for x in os.listdir(dataset_dir)]

# 转化所有图片
for path in image_filenames:
    img_cut(path[0], path[1])

函数img_cut跟前面是类似的,不再赘述。
os.path.join()函数是指连接多个文件夹,比如说:
Path20 = os.path.join(Path1,Path2,Path3)的输出就是Path20 = home\develop\code。然后这个for x in os.listdir(dataset_dir)相当于是对x的注解,表示x是数据集中图片序列。所以image_filenames就是只有(os.path.join(dataset_dir, x), os.path.join(output_dir, x)

重新设定图片大小

核心函数:resize

import os
from PIL import Image


def image_processing():
    #  待处理图片路径下的所有文件名字
    all_file_names = os.listdir('E:/zhongjian/test/4')
    for file_name in all_file_names:
        #  待处理图片路径
        img_path = Image.open(f'E:/zhongjian/test/4/{file_name}')
        #  resize图片大小,入口参数为一个tuple,新的图片的大小
        img_size = img_path.resize((224, 224))
        #  处理图片后存储路径,以及存储格式
        img_size.save(f'E:/dataset/test/4/{file_name}', 'JPEG')


image_processing()

比较简单不赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值