0
看看这个Python代码:OpenCV的旋转与warpAffine 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)
在旋转之前显示它时,它看起来像什么?清洁?此外,如果您给它一个奇数的像素尺寸,并且实际上可以选取中心像素作为中心,会发生什么情况? –
旋转之前,它是预期的干净的正方形。不幸的是,我无法改变图像尺寸,因为在上面的虚拟示例中它是一个白色图像 - 但我的实际数据集是CT扫描,我试图维护尺寸信息。 –
你试过旋转约24.5,24.5吗?它看起来像getRotationMatrix2D接受一个Point2f,所以它应该采用浮点数 –