Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/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
C++ 将二维网络转换为三维位置_C++_Opencv_Visual C++_Image Processing - Fatal编程技术网

C++ 将二维网络转换为三维位置

C++ 将二维网络转换为三维位置,c++,opencv,visual-c++,image-processing,C++,Opencv,Visual C++,Image Processing,我目前正在做一个增强现实项目,基本上我想在一个模式上渲染一个对象。 我已经检测到了模式和所有交叉点的坐标: 我想知道的是,是否有一种方法可以将这个2D网络转换为3D笛卡尔坐标系,以便将其提供给渲染引擎。像这样: 我知道用一些几何图形手动操作是可行的,但是否有一种内置的方法可以这样做?我不明白您想要什么。你想在棋盘上画点什么吗?你想知道它挂在太空的什么地方吗?你想要一个变换,把一个图像放在棋盘的位置吗?我想把3个向量放在这个网上,创建一个坐标系。图像越远,向量越小。这个:如果你有所有交叉点的三维坐

我目前正在做一个增强现实项目,基本上我想在一个模式上渲染一个对象。 我已经检测到了模式和所有交叉点的坐标:

我想知道的是,是否有一种方法可以将这个2D网络转换为3D笛卡尔坐标系,以便将其提供给渲染引擎。像这样:


我知道用一些几何图形手动操作是可行的,但是否有一种内置的方法可以这样做?

我不明白您想要什么。你想在棋盘上画点什么吗?你想知道它挂在太空的什么地方吗?你想要一个变换,把一个图像放在棋盘的位置吗?我想把3个向量放在这个网上,创建一个坐标系。图像越远,向量越小。这个:如果你有所有交叉点的三维坐标,问题是什么?通过减法得到红色和蓝色,通过叉积得到绿色。我怀疑是否需要任何内置方法。好吧,你需要一个旋转矩阵,将单位向量转换成两个彩色箭头。我忘记了颜色,但忘记了平面上的颜色。矩阵有三个自由度,你可以从这两个向量中得到四个方程,所以只要解出来就行了。你做过摄像机校准来得到摄像机的本质吗?如果是这样,可以使用solvePnP获取校准图案的姿势。使用矢量tvec和rvec,您应该能够将要绘制的对象的坐标变换到相机的坐标系。使用projectPoints,可以将这些3D点投影到相机的图像平面。