gpt4 book ai didi

python - OpenCV Python cv2.perspectiveTransform

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:02 26 4
gpt4 key购买 nike

我目前正在尝试使用 OpenCV 和 Python 进行视频稳定。我使用以下函数来计算旋转:

def accumulate_rotation(src, theta_x, theta_y, theta_z, timestamps, prev, current, f, gyro_delay=None, gyro_drift=None, shutter_duration=None):
if prev == current:
return src

pts = []
pts_transformed = []
for x in range(10):
current_row = []
current_row_transformed = []
pixel_x = x * (src.shape[1] / 10)
for y in range(10):
pixel_y = y * (src.shape[0] / 10)
current_row.append([pixel_x, pixel_y])

if shutter_duration:
y_timestamp = current + shutter_duration * (pixel_y - src.shape[0] / 2)
else:
y_timestamp = current

transform = getAccumulatedRotation(src.shape[1], src.shape[0], theta_x, theta_y, theta_z, timestamps, prev,
current, f, gyro_delay, gyro_drift)

output = cv2.perspectiveTransform(np.array([[pixel_x, pixel_y]], dtype="float32"), transform)
current_row_transformed.append(output)

pts.append(current_row)
pts_transformed.append(current_row_transformed)

o = utilities.meshwarp(src, pts_transformed)
return o

当它到达 output = cv2.perspectiveTransform(np.array([[pixel_x, pixel_y]], dtype="float32"), transform) 时出现以下错误:

cv2.error:/Users/travis/build/skvark/opencv-python/opencv/modules/core/src/matmul.cpp:2271: 错误:(-215) scn + 1 == m。函数 perspectiveTransform 中的 cols

如有任何帮助或建议,我们将不胜感激。

最佳答案

这个实现确实需要在未来的版本中改变,或者文档应该更清楚。

来自 perspectiveTransform() 的 OpenCV 文档:

src – input two-channel (...) floating-point array

我添加的倾斜强调。

>>> A = np.array([[0, 0]], dtype=np.float32)
>>> A.shape
(1, 2)

所以我们从这里看出A只是一个单 channel 矩阵,也就是二维的。一排,两列。相反,您需要一个双 channel 图像,即三维矩阵,其中第三维的长度为 2 或 3,具体取决于您发送的是 2D 点还是 3D 点。

长话短说,您需要再添加一组括号,使您发送的点集成为三维的,其中 x 值位于第一个 channel 中,而y 值在第二个 channel 中。

>>> A = np.array([[[0, 0]]], dtype=np.float32)
>>> A.shape
(1, 1, 2)

此外,正如评论中所建议的:

If you have an array points of shape (n_points, dimension) (i.e. dimension is 2 or 3), a nice way to re-format it for this use-case is points[np.newaxis]

它不直观,虽然有文档记录,但在这一点上不是很明确。这就是你所需要的。我已经回答了 identical question before ,但对于 cv2.transform() 函数。

关于python - OpenCV Python cv2.perspectiveTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817325/

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