我想相对于相机的外部和固有参数计算某些物点坐标的雅可比行列式。为此,我使用的是openCV
的{{1}},它返回Jacobian作为可选参数。
有关此功能的projectPoints
文档:
imagePoints,jacobian = cv.projectPoints(objectPoints,rvec,tvec,cameraMatrix,distCoeffs [,imagePoints [,jacobian [,AspectRatio]]])
当我致电openCV
时,出现此错误:
projectPoints(objectPoints, rvec, tvec, cameraMatrix, distCoeffs)
我已经阅读了这个SO post和这个Reddit post,都建议检查传递给cv2.error: OpenCV(4.4.0) /tmp/opencv-20200726-67088-i69mik/opencv-4.4.0/modules/calib3d/src/calibration.cpp:3558: error: (-215:Assertion failed) npoints >= 0 && (depth == CV_32F || depth == CV_64F) in function 'projectPoints'
的第一个参数的数据类型和大小。
我所有的变量均为projectPoints
,其大小符合文档要求。
我还读到它可能是由于点的实际坐标存在问题,这意味着这些点不适合图像框架,因此无法计算解决方案,但是我不确定如何解析地解决该问题。 。我正在尝试模拟摄像机看到的一组对象点,以获取图像点。
ndarray
,objectPoints
,rvec
,tvec
和cameraMatrix
之间必须保持任何数学关系吗?如果没有,我可以将任何典型/标准值用作起点吗?
这是我的代码:
distCoeffs
注意-我正在使用Python 3.8.5和OpenCV 4.4.0,以及numpy 1.19.1。
已编辑以添加可运行的代码。
已编辑以删除摘要中的无效代码。