Python批量剪切图像并保存

import cv2
import os
import numpy as np

def flip(image,change_angle):
    # Extracting height and width from
    # image shape
    height, width = image.shape[:2]
    print("old image size (wxh)=", (width, height))
    # get the center coordinates of the
    # image to create the 2D rotation
    # matrix
    center = ((width-1)/2, (height-1)/2)
    # using cv2.getRotationMatrix2D()
    # to get the rotation matrix
    rotate_matrix = cv2.getRotationMatrix2D(center=center, angle=change_angle, scale=1)
    print(rotate_matrix)
    bound_w = height * np.abs(rotate_matrix[0,1]) + width * np.abs(rotate_matrix[0,0])
    bound_h = height * np.abs(rotate_matrix[0,0]) + width * np.abs(rotate_matrix[0,1])
    bound_w = int(round(bound_w, 10))
    bound_h = int(round(bound_h, 10))
    print("new image size (wxh)=", (bound_w, bound_h))
    rotate_matrix[0, 2] += (bound_w-1) / 2 - center[0]
    rotate_matrix[1, 2] += (bound_h-1) / 2 - center[1]
    # rotate_matrix[1,2] += height/2
    # rotate the image using cv2.warpAffine
    # 90 degree anticlockwise
    rotated_image = cv2.warpAffine(src=image, M=rotate_matrix, dsize=(bound_w, bound_h), borderMode=cv2.BORDER_CONSTANT, borderValue=(128, 128, 128))
    return rotated_image

def save(data_dir,save_dir):
    if not os.path.exists(save_dir):
        os.mkdir(save_dir)
    for name in os.listdir(data_dir):
        #save_name = name[:-4] + "_{}.png".format(angle)#翻转图像命名
        save_name = name[:-4] + "_cut.png"  # 剪切图像命名
        img = cv2.imread(os.path.join(data_dir,name))
        #img_new = flip(img, angle)#翻转图像方法
        img_new = cut(img)  # 剪切图像方法
        cv2.imwrite(os.path.join(save_dir,save_name), img_new)

def flip_main():
    Data_dir = "/home/ljs/Desktop/name"  # 要改变的图片的路径文件夹
    Save_dir = "/home/ljs/Desktop/name_flip"  # 要保存的图片的路径文件夹
    for i in range(0,361,15):
        #print(i)
        save(Data_dir, Save_dir, i)  # 进行批量处理并且保存

def show():
    imgFile = "/home/ljs/Desktop/name/1.png"
    img = cv2.imread(imgFile)
    cv2.imshow("Demo1", img)
    cv2.waitKey(0)

def cut(image):
    cropped_image = image[250:1450, 300:1750]  # Slicing to crop the image
    return cropped_image

def cut_main():
    Data_dir = "/home/ljs/Desktop/name_flip"  # 要改变的图片的路径文件夹
    Save_dir = "/home/ljs/Desktop/name_cut"  # 要保存的图片的路径文件夹
    save(Data_dir, Save_dir)  # 进行批量处理并且保存

if __name__ == '__main__':
    #flip_main()
    #show()
    cut_main()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值