Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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/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/meteor/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++ 通过物理鱼眼摄像头和Open CV实现虚拟云台摄像头_C++_Opencv_Projection_Ip Camera_Fisheye - Fatal编程技术网

C++ 通过物理鱼眼摄像头和Open CV实现虚拟云台摄像头

C++ 通过物理鱼眼摄像头和Open CV实现虚拟云台摄像头,c++,opencv,projection,ip-camera,fisheye,C++,Opencv,Projection,Ip Camera,Fisheye,我试图实现一个虚拟的云台变焦(PTZ)摄像机,基于物理鱼眼摄像机(180度视场)的数据 在我看来,我必须了解下一个顺序 获取鱼眼传感器矩阵坐标中鱼眼圆心的坐标 获取同一坐标系中鱼眼圆的半径 生成一个球体方程,其中心和半径与平面相机传感器上的平面鱼眼图像相同 将所有彩色点从平面图像投影到上半球 选择X Y平面和X Z平面中的角度来描述虚拟云台的视图方向 选择视角,并在虚拟PTZ视图矢量周围画一圈,该虚拟PTZ视图矢量将绘制在半球表面上 生成与半球相交的平面方程,该方程将围绕视图方向形成一个圆 使用

我试图实现一个虚拟的云台变焦(PTZ)摄像机,基于物理鱼眼摄像机(180度视场)的数据

在我看来,我必须了解下一个顺序

  • 获取鱼眼传感器矩阵坐标中鱼眼圆心的坐标
  • 获取同一坐标系中鱼眼圆的半径
  • 生成一个球体方程,其中心和半径与平面相机传感器上的平面鱼眼图像相同
  • 将所有彩色点从平面图像投影到上半球
  • 选择X Y平面和X Z平面中的角度来描述虚拟云台的视图方向
  • 选择视角,并在虚拟PTZ视图矢量周围画一圈,该虚拟PTZ视图矢量将绘制在半球表面上
  • 生成与半球相交的平面方程,该方程将围绕视图方向形成一个圆
  • 使用从半球边缘到半球中心的投影方向,围绕视图方向将所有彩色点从圆移动到圆平面
  • 使用插值(在cv::remap中实现)在投影圆内绘制所有未绘制的点
  • 在我看来,最重要的步骤是将彩色点从平面图像上升到三维半球

    我的问题是: 根据半球方程将平面图像的所有彩色点的Z坐标设置为从图像平面上升到半球表面是否正确


    这听起来太复杂了。这个问题我已经研究过好几次了,但我还是不明白你的建议。但我认为你们计划的一部分是精确复制一些像素,然后对其他像素进行插值。谢谢你们的回复。为了让我的问题更清楚,我添加了一张图片,其中有一个理想结果的示例。在左上角,你们可以看到鱼眼相机的红色、蓝色和绿色区域的图像。左上角的这个圆是半球到摄像机传感器平面的投影。红色、绿色和蓝色区域是矩形区域的投影,环绕三维半球。在右上角、左下角和右下角,您可以看到此区域以脱蜡形式出现。这是我的最后一项任务。对于熟悉鱼眼照相机的人来说,最终结果是显而易见的。你提出的过程一点也不明显。你用谷歌搜索过“OpenCV fisheye”吗?我当然用过:)有很多“通过fisheye的虚拟PTZ”解决方案,但它们都是商业产品:(是的,我使用了cv::fisheye模块。不幸的是,如果相机的视场为180度或以上,cv::fisheye无法100%取消初始鱼眼图像表面的失真。我做了更详细的解释。正如我上一张图片中所示,一些商业产品可以100%取消鱼眼图像表面的失真。