猿问

如何使用opencv实现居中剪切图像

当我使用 warpAffine 剪切图像时:


M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])

aff2 = cv2.warpAffine(im, M2, (W, H))

我获得了在图像中心周围没有剪切的图像。我可以在图像的一侧看到黑色三角形区域,而另一侧没有黑色区域。


我怎样才能让图像被对称剪切?


一只斗牛犬
浏览 126回答 1
1回答

RISEBY

您必须调整翻译参数(第 3 列)以使图像居中。即你必须翻译一半的宽度和高度乘以一个因子。例如M2 = np.float32([[1, 0, 0], [0.2, 1, 0]])M2[0,2] = -M2[0,1] * W/2M2[1,2] = -M2[1,0] * H/2aff2 = cv2.warpAffine(im, M2, (W, H))前后完整代码import cv2import numpy as npimport matplotlib.pyplot as pltim = np.ones((100,100))H, W = im.shapeM2 = np.float32([[1, 0, 0], [0.2, 1, 0]])M2[0,2] = -M2[0,1] * W/2M2[1,2] = -M2[1,0] * H/2aff2 = cv2.warpAffine(im, M2, (W, H))plt.imshow(aff2, cmap="gray")
随时随地看视频慕课网APP

相关分类

Python
我要回答