查看此Python代码:
degrees = 90
center = (24, 24)
img = np.ones((48,48,3)) * 255
mat = cv2.getRotationMatrix2D(center, degrees, 1.0)
img = cv2.warpAffine(img, mat, (48, 48))
我的期望是创建一个3通道,完全饱和的白色方块并存储在img中。之后,它将旋转90度。将白色方块旋转90度应该会产生......难以区分的白色方块。但是当我:
plt.imshow(img)
plt.show(img)
我看到一个错误的黑色边框:
有没有办法让warpAffine
按预期工作,即在没有错误边框的情况下旋转图像?我尝试了以下修改无济于事:
center = (23, 23)
center = (24, 23)
center = (23, 24)
center = (25, 25)
center = (24, 25)
center = (25, 24)
答案 0 :(得分:2)
你应该使用图像的确切中心而不是下一个最接近的东西。使用(24,24)旋转略微偏离中心。
由于getRotationMatrix2D
接受Point2f,您应该将中心作为(23.5,23.5)
传递,因为它是0 and 47
之间的中间点。