外观
踩坑Robotics Stack Exchange2017-10-19
OpenCV恢复平面图像时透视变换为何无效?
本文由 AI 根据公开内容整理,可能有误,请以原文为准:OpenCV get topdown view of planar pattern by using intrinsic and extrinsic from cameraCalibrate(Robotics Stack Exchange #14417)
状态:已解决
问题
提问者用calibrateCamera得到内外参后,对畸变透视图B执行undistort和warpPerspective生成C,但结果几乎没有处理透视变换;后续还发现中间图tempImgC可能丢失外侧信息。
环境
Linux / ROS 机器人软件与控制通用开发环境
解决办法
- 恢复图像时调用
warpPerspective(tempImgC, imgC, matPerspective, Size(2500, 2000), WARP_INVERSE_MAP)。 - 为避免
undistort中间图丢失外侧信息,先用getOptimalNewCameraMatrix(intrinsic, distCoeffs, Size(2500, 2000), 1)生成newIntrinsic,再传给undistort并用newIntrinsic*transRot3x3计算透视矩阵。 - 若逐帧处理需提升效率,可用
projectPoints直接生成目标到源图的映射,再对每帧调用remap,避免中间图。
原问题作者:ricecakebear;采纳答案作者:ricecakebear。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。
来源
本页事实对应的公开页面,以原文为准。