2 回答
TA贡献1830条经验 获得超9个赞
对于图像翻译,您可以使用有点晦涩的numpy.roll功能。在这个例子中,我将使用白色画布,这样更容易可视化。
image = np.full_like(original_image, 255)
height, width = image.shape[:-1]
shift = 100
# shift image
rolled = np.roll(image, shift, axis=[0, 1])
# black out shifted parts
rolled = cv2.rectangle(rolled, (0, 0), (width, shift), 0, -1)
rolled = cv2.rectangle(rolled, (0, 0), (shift, height), 0, -1)
如果你想翻转图像使黑色部分在另一边,你可以同时使用np.fliplr和np.flipud。
结果:
TA贡献1871条经验 获得超13个赞
tx这是一个简单的解决方案,它仅使用数组索引按像素转换图像ty,不会翻转,并且还可以处理负值:
tx, ty = 8, 5 # translation on x and y axis, in pixels
N, M = image.shape
image_translated = np.zeros_like(image)
image_translated[max(tx,0):M+min(tx,0), max(ty,0):N+min(ty,0)] = image[-min(tx,0):M-max(tx,0), -min(ty,0):N-max(ty,0)]
例子:
(请注意,为简单起见,它不处理tx > M
或 的情况ty > N
)。
添加回答
举报