C++ 通过物理鱼眼摄像头和Open CV实现虚拟云台摄像头
我试图实现一个虚拟的云台变焦(PTZ)摄像机,基于物理鱼眼摄像机(180度视场)的数据 在我看来,我必须了解下一个顺序C++ 通过物理鱼眼摄像头和Open CV实现虚拟云台摄像头,c++,opencv,projection,ip-camera,fisheye,C++,Opencv,Projection,Ip Camera,Fisheye,我试图实现一个虚拟的云台变焦(PTZ)摄像机,基于物理鱼眼摄像机(180度视场)的数据 在我看来,我必须了解下一个顺序 获取鱼眼传感器矩阵坐标中鱼眼圆心的坐标 获取同一坐标系中鱼眼圆的半径 生成一个球体方程,其中心和半径与平面相机传感器上的平面鱼眼图像相同 将所有彩色点从平面图像投影到上半球 选择X Y平面和X Z平面中的角度来描述虚拟云台的视图方向 选择视角,并在虚拟PTZ视图矢量周围画一圈,该虚拟PTZ视图矢量将绘制在半球表面上 生成与半球相交的平面方程,该方程将围绕视图方向形成一个圆 使用
这听起来太复杂了。这个问题我已经研究过好几次了,但我还是不明白你的建议。但我认为你们计划的一部分是精确复制一些像素,然后对其他像素进行插值。谢谢你们的回复。为了让我的问题更清楚,我添加了一张图片,其中有一个理想结果的示例。在左上角,你们可以看到鱼眼相机的红色、蓝色和绿色区域的图像。左上角的这个圆是半球到摄像机传感器平面的投影。红色、绿色和蓝色区域是矩形区域的投影,环绕三维半球。在右上角、左下角和右下角,您可以看到此区域以脱蜡形式出现。这是我的最后一项任务。对于熟悉鱼眼照相机的人来说,最终结果是显而易见的。你提出的过程一点也不明显。你用谷歌搜索过“OpenCV fisheye”吗?我当然用过:)有很多“通过fisheye的虚拟PTZ”解决方案,但它们都是商业产品:(是的,我使用了cv::fisheye模块。不幸的是,如果相机的视场为180度或以上,cv::fisheye无法100%取消初始鱼眼图像表面的失真。我做了更详细的解释。正如我上一张图片中所示,一些商业产品可以100%取消鱼眼图像表面的失真。