OpenCV estimateAffine3D错误的错误消息

时间:2016-02-16 09:36:06

标签: python opencv numpy

我有2个3D点云,存储在numpy.ndarrays中,包含0或1(指示检测到的点或没有)。 我想计算转换'测试'的仿射变换。数组到'参考'阵列。

我这样称呼函数:

import numpy as np
from cv2 import estimateAffine3D

[...] Read in the Arrays [...]

print(np.shape(Reference))
print(np.shape(Test))

AffineTransfMatrix = estimateAffine3D(Reference,Test)

我得到的输出是:

(132, 2055, 701)
(132, 2055, 701)
OpenCV Error: Assertion failed (count >= 0 && to.checkVector(3) == count) in estimateAffine3D, file /home/wenzlern/libraries/opencv/modules/calib3d/src/ptsetreg.cpp, line 513
Traceback (most recent call last):
  File "/home/wenzlern/code/python/AbsorbtionSpecAnalysis/AlignEnergies.py", line 67, in <module>
    estimateAffine3D(Reference,Test)
cv2.error: /home/wenzlern/libraries/opencv/modules/calib3d/src/ptsetreg.cpp:513: error: (-215) count >= 0 && to.checkVector(3) == count in function estimateAffine3D

我尝试使用Reference / Test.astype(&#39; float32&#39;)来尝试使用数据类型,但无法更改结果。文档似乎没有指定特定的格式。(http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#estimateaffine3d)。

有没有人知道会出现什么问题?我错过了什么,或者说错了功能吗?

非常感谢, 尼尔斯

2 个答案:

答案 0 :(得分:1)

我发现,使用OpenCV 4.1.1时,将numpy数组的dtype设置为np.int64 时,也会为EstimateAffinePartial2D和estimateAffine2D提供类似的错误消息:
error: (-215:Assertion failed) count >= 0 && to.checkVector(2) == count in function 'estimateAffinePartial2D'

答案 1 :(得分:0)

用户Micka(在对问题的评论中)有正确的解决方案。数组必须以Nx3格式传递。 换一种说法: Point-Cloud中每个点的坐标(x,y,z)是要传递的Nx3矩阵中的一个1x3条目。

谢谢!