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
OpenCV中的三维绘制_Opencv - Fatal编程技术网

OpenCV中的三维绘制

OpenCV中的三维绘制,opencv,Opencv,我正在做一个关于场景3D渲染的项目。我正在使用OpenCV。我所做的步骤如下: 拍摄一个场景的两张照片 使用SURF特征匹配计算对象对应关系 计算相机基本矩阵 计算视差图像 现在我有两个问题 在计算基本矩阵之后,如何计算Q矩阵?(我无法校准相机) 如何使用opencv或任何其他库进行3D渲染 对于3D部分,可以使用OpenGL或PCL渲染场景。您有两种解决方案: 对于每个像素,使用从相机图像中提取的正确颜色创建一个点。这将为您提供一个可以使用PCL处理的点云(例如,用于三维特征提取) 应用三角

我正在做一个关于场景3D渲染的项目。我正在使用OpenCV。我所做的步骤如下:

  • 拍摄一个场景的两张照片
  • 使用SURF特征匹配计算对象对应关系
  • 计算相机基本矩阵
  • 计算视差图像
  • 现在我有两个问题

  • 在计算基本矩阵之后,如何计算Q矩阵?(我无法校准相机)

  • 如何使用opencv或任何其他库进行3D渲染


  • 对于3D部分,可以使用OpenGL或PCL渲染场景。您有两种解决方案:

    • 对于每个像素,使用从相机图像中提取的正确颜色创建一个点。这将为您提供一个可以使用PCL处理的点云(例如,用于三维特征提取)
    • 应用三角剖分算法,但要应用此算法,必须具有相机的外部矩阵
    您可以在此处找到有关这些技术的更多信息:


    如果要使用OpenGL,必须打开有效的OpenGL上下文。我向您推荐library或Qt。这些库非常容易使用,并且有很好的文档。两者都有关于OpenGL三维渲染的教程。

    对于可视化,可以使用or(PCL的可视化基于vtk,但对我来说更易于实现)

    如果你只是想看看输出,你可以使用一些软件,比如


    干杯

    您可以通过openCV方法通过立体声校正获得Q矩阵:

    cv::stereoRectify
    
    我想你需要Q矩阵来重建3D。但是,您可以通过以下方式从内部参数重建:

    X = (u-cu)*base/d
    Y = (v-cv)*base/d
    Z = f*base/d 
    
    其中(u,v)是图像坐标系中的2D点,(cu,cv)是相机的主点,f是焦距,基准是基线,d是视差,(X,Y,Z)是相机坐标系中的3D点