c++ - OpenCv C++ 透视变换

标签 c++ opencv camera camera-calibration

我正在尝试使用 OpenCv 校正图像的失真,然后在给定像素坐标的情况下计算真实世界的坐标。我无法在网上或 OpenCv 书中找到有关如何执行此操作的任何示例。

我已经用棋盘图像完成了相机校准。现在,我只需要一个基本函数,我可以为其提供像素坐标,它将根据相机矩阵、失真系数、旋转和平移 vector 为我提供真实世界的坐标。

有人知道怎么做吗?

最佳答案

看看 findHomography() 函数。如果您知道一组点在现实世界中的位置,则可以使用此函数创建转换矩阵,您可以将其与函数 perspectiveTransform()

一起使用
std::vector<Point2f> worldPoints;
std::vector<Point2f> cameraPoints;

//insert somepoints in both vectors

Mat perspectiveMat_= findHomography(cameraPoints, worldPoints, CV_RANSAC);

//use perspective transform to translate other points to real word coordinates

std::vector<Point2f> camera_corners;
//insert points from your camera image here

std::vector<Point2f> world_corners;
perspectiveTransform(camera_corners, world_corners, perspectiveMat_);

您可以找到有关函数 here 的更多信息

关于c++ - OpenCv C++ 透视变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012316/

相关文章:

ios - 是否可以让应用程序在照片中查找 "certain features"

c++ - 免费运营商与成员(member)运营商

c++ - 带有 std::error_code 的错误堆栈

c++ - 为路径的每个元素创建一个目录(如果它不存在)

python - 使用 python 和 opencv 获取电影属性

Android 2.3.4 在 Camera.setParameters 上崩溃

c++ - 多个字符的strchr?

python - 通过分析 skype 屏幕截图找出谁开始了对话 - python

java - 整齐地返回轮廓 - OpenCV/Java

android - Camera 2 - API - 使用前置摄像头时图像捕捉不工作?