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,angle):
    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)
        img = cv2.imread(os.path.join(data_dir,name))
        img_new = flip(img, angle)
        cv2.imwrite(os.path.join(save_dir,save_name), img_new)
def 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)  # flags=1 读取彩色图像(BGR)
    cv2.imshow("Demo1", img)  # 在窗口 "Demo1" 显示图像 img1
    cv2.waitKey(0)  # 等待按键命令, 1000ms 后自动关闭
if __name__ == '__main__':
    #main()
    show()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值