gpt4 book ai didi

python - 如何在不使用 cv2.warpAffine() 的情况下翻译图像? [Python 3 和 OpenCV 4.1]

转载 作者:行者123 更新时间:2023-12-02 15:41:33 35 4
gpt4 key购买 nike

我试图通过切断左侧的 100 像素并在右侧添加 100 像素的黑色像素来将图像(来自视频捕获)向左平移 100 像素,以使图像保持相同的大小。我知道这可以通过 cv2.warpAffine() 和翻译矩阵来完成,但是对每一帧这样做会增加大量的延迟。我已经读到可能有一种方法可以使用 cv2.copyTo() 来做到这一点,但我仍然不确定这究竟是如何做到的,无论是使用 copyTo 还是其他方法。谢谢!
这是在 Python 3 和 OpenCV 4.1 中完成的
当前(慢)方法:

translation_matrix = np.float32([[1, 0, x_shift], [0, 1, y_shift]])
img = cv2.warpAffine(img, translation_matrix, (w, h))

最佳答案

创建一个与旧图像大小相同的新图像,但索引到旧图像中,这样您就可以在 100 像素处开始按列索引。之后,确保您分配这些像素,以便我们从新图像的第一列开始,直到最后一列的第 100 列。

import cv2
import numpy as np

# Define your image somewhere...
# ...
# ...

img2 = np.zeros_like(img)
img2[:,:-100] = img[:,100:]
上面的代码创建了一个名为 img2 的新图像初始化为与原始输入图像大小相同的所有零 img .之后,我们从原始图像的第 100 列开始复制像素到最后,然后将其分配给目标图像中从第一列到最后 100 列的所有列。之后的其余列仍将全部为零,这有效给你黑色像素。

关于python - 如何在不使用 cv2.warpAffine() 的情况下翻译图像? [Python 3 和 OpenCV 4.1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62643790/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com