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()
Python批量剪切图像并保存
最新推荐文章于 2023-02-16 16:25:58 发布