python 旋转图片

参考链接:python实现图片任意角度旋转 - 知乎


from math import *
import cv2
import random
import numpy as np

def rotate_img_whole_img(img, angle):
    '''
    img   --image
    angle --rotation angle
    return--rotated img
    '''
    h, w = img.shape[:2]
    rotate_center = (w/2, h/2)
    #获取旋转矩阵
    # 参数1为旋转中心点;
    # 参数2为旋转角度,正值-逆时针旋转;负值-顺时针旋转
    # 参数3为各向同性的比例因子,1.0原图,2.0变成原来的2倍,0.5变成原来的0.5倍
    M = cv2.getRotationMatrix2D(rotate_center, angle, 1.0)
    #计算图像新边界
    new_w = int(h * np.abs(M[0, 1]) + w * np.abs(M[0, 0]))
    new_h = int(h * np.abs(M[0, 0]) + w * np.abs(M[0, 1]))
    #调整旋转矩阵以考虑平移
    M[0, 2] += (new_w - w) / 2
    M[1, 2] += (new_h - h) / 2

    rotated_img = cv2.warpAffine(img, M, (new_w, new_h))
    return rotated_img


def rotate_img_ori_img(img):
    '''
    img   --image
    angle --rotation angle
    return--rotated img
    '''
    sample_angle =[-10,-7,-5,-2,2,5,7,10] 
    angle = random.sample(sample_angle,k=1)[-1] 
    h, w = img.shape[:2]
    (h, w) = img.shape[:2]  
  
    # 计算旋转中心点  
    center = (w / 2, h / 2)  
    
    # 计算旋转矩阵  
    M = cv2.getRotationMatrix2D(center, angle, 1.0)  
    
    # 进行图像旋转  
    rotated = cv2.warpAffine(img, M, (w, h))  
    return rotated



img = cv2.imread("image/test.png")

rotate = rotate_img_ori_img(img)

cv2.namedWindow('window', cv2.WINDOW_NORMAL)  
cv2.resizeWindow('window', 800, 600) 
cv2.namedWindow('window1', cv2.WINDOW_NORMAL)  
cv2.resizeWindow('window1', 800, 600) 


cv2.imshow('window', img)  
cv2.imshow('window1', rotate)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值