【代码笔记】用python实现图像的批量剪裁

本文介绍了一个简单的图像处理工具,能够将指定文件夹内的图像自动切割成四个部分,并分别保存为四个不同的文件。此工具使用Python语言编写,利用OpenCV库进行图像处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://blog.youkuaiyun.com/weixin_43289135/article/details/107645125

功能:
输入是D:/MINE/test文件夹下的所有图像,输出保存在D:/MINE/test/out。路径名称必须全是英文!
假设test文件夹下有图像1.png,运行代码后out文件夹下有1_orig.png、1_gt.png、1_raw.png、1_now.png四张图片,分别对应1.png的左上角、左下角、右上角、右下角,也就是将一张图像切分成了2×2四块子图像。

代码:

import numpy as np
import cv2
import os

def update(input_img_path, output_img_path, place):
    image = cv2.imread(input_img_path)
    cropped = image[place[0]:place[1], place[2]:place[3]]  # 裁剪坐标为[y0:y1, x0:x1]
    cv2.imwrite(output_img_path, cropped)

dataset_dir = 'D:/MINE/test'  # 需要剪裁的图像所在目录

# 获得需要转化的图片路径并生成目标路径
names = [name for name in os.listdir(dataset_dir)
        if os.path.isfile(os.path.join(dataset_dir, name))]  # 仅获得该目录下的文件名,而不包括文件夹名

suffix = ['_orig','_gt','_raw','_now']
place = [[60,550,70,990],
         [585,1075,70,990],
         [60,550,1000,1920],
         [585,1075,1000,1920]]
for m, i in enumerate(suffix):
    output_dir = 'D:/MINE/test/out'  # 剪裁好的图像的存放位置
    if not os.path.isdir(output_dir):
        os.makedirs(output_dir)
    image_filenames = [(os.path.join(dataset_dir, x), os.path.join(output_dir, x.split('.')[0]+i+'.png'))
                       for x in names]
    for path in image_filenames:
        print(path[0])
        print(path[1])
        update(path[0], path[1], place[m])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值