python图片旋转去黑边
- 简单的图片旋转但是出现黑边
import cv2 #opencv-python库
import random
import numpy as np
for i in range(1, 10):
img = cv2.imread('D:/xxx/'+str(i)+'.png')
imginfo = img.shape
height = imginfo[0]
width = imginfo[1]
a = random.randint(1, 3) * 90 #随机旋转90 180 270度
mat = cv2.getRotationMatrix2D((height*0.5, width*0.5), a, 1)
dst = cv2.warpAffine(img, mat, (height, width))
cv2.imwrite('D:/xxxx/'+str(i)+'.png', dst)
但是旋转后出现了黑边
- 解决黑边问题
from math import *
import random
import numpy as np
for i in range(1, 100):
img = cv2.imread('D:/xxx/' + str(i) + '.png')
img = np.array(img)
height, width = img.shape[:2]
a = random.randint(1, 3) * 90
degree = a
# 旋转后的尺寸
heightNew = int(width * fabs(sin(radians(degree))) + height * fabs(cos(radians(degree))))
widthNew = int(height * fabs(sin(radians(degree))) + width * fabs(cos(radians(degree))))
matRotation = cv2.getRotationMatrix2D((width / 2, height / 2), degree, 1)
matRotation[0, 2] += (widthNew - width) / 2 # 重点在这步,目前不懂为什么加这步
matRotation[1, 2] += (heightNew - height) / 2 # 重点在这步
imgRotation = cv2.warpAffine(img, matRotation, (widthNew, heightNew), borderValue=(255, 255, 255))
cv2.imwrite('D:/xxx/' + str(i + 67347) + '.png', imgRotation)