看看图像,它会给予你更好地了解我想要实现什么。我想旋转图像,并填补图像的黑色部分,就像在所需的图像。
# Read the image
img = cv2.imread("input.png")
# Get the image size
h, w = img.shape[:2]
# Define the rotation matrix
M = cv2.getRotationMatrix2D((w/2, h/2), 30, 1)
# Rotate the image
rotated = cv2.warpAffine(img, M, (w, h))
mask = np.zeros(rotated.shape[:2], dtype=np.uint8)
mask[np.where((rotated == [0, 0, 0]).all(axis=2))] = 255
img_show(mask)
从代码中我可以得到黑色区域的遮罩。现在我想用1中所示的图像部分替换这些黑色区域。有什么更好的解决方案可以实现这一点。
2条答案
按热度按时间j7dteeu81#
使用
warpAffine
的borderMode
参数。您需要传递
BORDER_WRAP
值。这是结果。这和你第一张照片描述的完全一样。
wljmcqd82#
我有一个办法,你可以先创建一个3 * 3倍的大图像,当你旋转这个图像,只切掉这个大图像的中心,你就有了你想要的结果。