原图
旋转-30°
旋转5°
源代码如下:
import cv2
import numpy as np
def rotate_bound(image, angle):
# 获取图像的尺寸,然后确定中心
(h, w) = image.shape[:2]
(cX, cY) = (w // 2, h // 2)
# 获取旋转矩阵(应用
#角度顺时针旋转),然后抓住正弦和余弦
#(即矩阵的旋转分量)
M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)
cos = np.abs(M[0, 0])
sin = np.abs(M[0, 1])
# 计算图像新的边界尺寸
nW = int((h * sin) + (w * cos))
nH = int((h * cos) + (w * sin))
# adjust the rotation matrix to take into account translation
M[0, 2] += (nW / 2) - cX
M[1, 2] += (nH / 2) - cY
# 调整旋转矩阵以考虑平移
return cv2.warpAffine(image, M, (nW, nH))
if __name__ == "__main__":
img = cv2.imread(r"C:\Users\lqm\Documents\3DPrinter\Image\DImg_1.jpg")
img = rotate_bound(img, -180)
hImg = cv2.flip(img, 1)
vImg = cv2.flip(img, 0)
cv2.imwrite(r"C:\Users\lqm\Documents\3DPrinter\Image\h_3_1.jpg", hImg)
cv2.imwrite(r"C:\Users\lqm\Documents\3DPrinter\Image\v_3_1.jpg", vImg)
cv2.imwrite(r"C:\Users\lqm\Documents\3DPrinter\Image\3_1.jpg", img)
# cv2.imshow("img", img)
# cv2.waitKey()
有问题的小伙伴可以留言哟!