如何解决我正在尝试使用cv2.projectPoints,但出现错误
这是错误:
imgpts,jac = cv2.projectPoints(axis,rvecs,tvecs,mtx,dist)
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\calib3d\src\calibration.cpp:603:
error: (-5:Bad argument) Rotation must be represented by 1x3 or 3x1 floating-point rotation vector,or
3x3 rotation matrix in function 'cvProjectPoints2Internal'
这是我的代码:
axis = np.float32([[3,0],[0,10,-50]]).reshape(-1,3)#axis of coordinates
# PnP calculates the rotation vector and translation vector
rvecs,inliers = cv2.solvePnP(obj_points,image_points,dist)
print(f"mtx shape: {mtx.shape},tvecs shape: {tvecs.shape}")
print(f"mtx:\n {mtx}")
print(f"tvecs:\n {tvecs}")
# Calculate the coordinates of 3D points projected on 2D image plane
imgpts,dist)
这是工厂:
mtx shape: (3,3),tvecs shape: (3,1)
mtx:
[[1.71223579e+03 0.00000000e+00 1.02990683e+03]
[ 0.00000000e+00 1.70818827e+03 7.83446773e+02]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
tvecs:
[[-0.09038089]
[ -0.05386737]
[ -0.01652085]]
我不知道如何解决它。问题似乎在于参数的形式。但是,当我检查它们时,它们的形状似乎正确。所以我不知道问题出在哪里,但是如果您这样做,将会很有帮助。
解决方法
也许您正试图从旧教程中获取一些代码,或者您误读了有关返回值的函数文档。尝试像这样从solvePnP分配返回值:
result,rvecs,tvecs = cv2.solvePnP(obj_points,image_points,mtx,dist)
solvePnP函数(至少从opencv4开始)不应有“内含物”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。