Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kinect&x2B;OpenCV:无法在python中使用cv2.solvePnP获取旋转向量_Python_Opencv_Openni_Openkinect - Fatal编程技术网

Kinect&x2B;OpenCV:无法在python中使用cv2.solvePnP获取旋转向量

Kinect&x2B;OpenCV:无法在python中使用cv2.solvePnP获取旋转向量,python,opencv,openni,openkinect,Python,Opencv,Openni,Openkinect,我正在做一个项目,我需要跟踪空中物体并计算六自由度 我目前正在跟踪彩色球,计算它们在rgb_帧中的中心,并使用中心值来查找深度_帧中的深度 在找到真实世界坐标系中的深度(Z)后,我使用方程计算真实世界的X和Y:X=(Zu)/fx和Y=(Zv)/fy,其中fx,fy是从kinect的固有参数获得的焦距,在这种情况下,u和v是中心的X,Y值 我将(u,v)视为像点,将(X,Y,Z)视为像点,并将其输入到这个方法中:solvePnP obj_pts=np.array([[X,Y,Z]],np.floa

我正在做一个项目,我需要跟踪空中物体并计算六自由度

  • 我目前正在跟踪彩色球,计算它们在rgb_帧中的中心,并使用中心值来查找深度_帧中的深度

  • 在找到真实世界坐标系中的深度(Z)后,我使用方程计算真实世界的X和Y:X=(Zu)/fx和Y=(Zv)/fy,其中fx,fy是从kinect的固有参数获得的焦距,在这种情况下,u和v是中心的X,Y值

  • 我将(u,v)视为像点,将(X,Y,Z)视为像点,并将其输入到这个方法中:solvePnP

    obj_pts=np.array([[X,Y,Z]],np.float64)
    img\u pts=np.array([[u,v]],np.float64)

    ret、rvecs、tvecs=cv2.solvePnP(obj、img、摄像机矩阵2、np距离系数)

  • 我希望找到我将用作以下输入的rvecs:

    cv2.Rodrigues(rvecs)
    
    得到欧拉角,即俯仰角、偏航角、横摇角

    我目前在solvePnP调用中遇到问题,导致以下错误:

    /opencv-3.0.0/modules/calib3d/src/solvepnp.cpp:61:错误:(-215)npoints>=0&&npoints==std::max(函数solvepnp中的ipoints.checkVector(2,CV_32F),ipoints.checkVector(2,CV_64F))

    我也知道不建议只发送中心的对象和图像点。这是我实现目标的第一步。我打算稍后使用像SIFT这样的特征检测器使它更有趣

    有谁能建议我的方法并帮助我找到六个自由度:


    前/后、上/下、左/右、俯仰、偏航、滚动

    虽然我的方法完全正确,但我忽略了一个事实,即要计算真实坐标中3D对象的方向,我们需要像素和对象坐标中至少4+个对应的点集

    我只需要检查图像中超过4个点的轮廓,我的代码按预期工作,我能够准确地计算出6个自由度,而且现在我已经使它更加复杂,很快我就可以共享到我的工作的git链接

    我仍然想听到,如何成功地测试方向的正确性,我能够使用罗德里格斯公式计算