c++ - 使用 OpenCV 将 3D 点投影到不失真的 ROI
问题描述
假设我有一台已使用完整相机帧校准的相机,以获得相机矩阵和失真系数。另外,假设我在该相机的框架中表达了一个 3D 世界点。
我知道我可以使用cv::projectPoints()
with rvec=tvec=(0,0,0)
、相机矩阵和失真系数将点投影到(完整)失真帧。我也知道,如果我从相机接收到 ROI(这是完整失真帧的裁剪部分),我可以简单地通过从(x,y)
结果中减去 ROI 左上角的坐标来调整 ROI cv::projectPoints()
。最后,我知道如果我使用cv::projectPoints()
with rvec=tvec=(0,0,0)
、相机矩阵和零失真系数,我可以将点投影到完整的未失真帧(如果我错了,请纠正我,但我认为这需要您使用相同的相机矩阵cv::undistort()
并且不要使用newCameraMatrix
)。
我如何处理我想投影到我收到的 ROI 的未失真版本的情况(即我得到一个(失真的)ROI,然后使用此处cv::undistort()
描述的方法使用它以说明它是一个 ROI 的事实,然后我想将 3D 点投影到生成的图像上)?
如果有更好的方法来解决这一切,我也愿意接受建议。我的目标是,我希望能够将 3D 点投影到失真和未失真的帧,无论是否存在 ROI,其中 ROI 始终最初由来自相机的馈送定义,因此始终在失真帧中定义(即 4不同的情况:失真的全帧、失真的 ROI、未失真的全帧、失真 ROI 的未失真版本)。
解决方案
推荐阅读
- postgresql - 当在最简单的查询中进行索引扫描时,Postgres 正在执行顺序扫描
- sql - 如果发现连续的 NULL,则将行删除到第 n 个位置
- python - Pandas 数据框中的分组和连接值
- c# - 从 C# 连接到 MQ 多实例 (MQMI) 队列管理器
- python - 数据框/系列的python正确舍入
- json - 如何使用 jq 在包含任何字母的 JSON 文件中查找属性?
- python - 将压缩视频从 python 后端流式传输到响应前端,因为它正在被处理
- python - PyQt5 应用程序的分段错误 11
- templates - 如何在 Confluence 中创建嵌套的模板页面
- javascript - 移动设备上的 Ace Editor 自动完成功能