【发布时间】:2016-04-30 00:50:27
【问题描述】:
我正在使用 OpenCV 开发 iOS 增强现实应用程序。我在创建相机投影矩阵以允许 OpenGL 覆盖直接映射到标记顶部时遇到问题。我觉得这是由于我的 iPhone 6 相机没有正确校准到应用程序。我知道有 OpenCV 代码可以使用棋盘校准网络摄像头等,但我找不到校准嵌入式 iPhone 摄像头的方法。
有办法吗?或者是否有已知的 iPhone 6 估计值?其中包括:x和y的焦距,x和y的主点,以及畸变系数矩阵。
任何帮助将不胜感激。
编辑:
推导值如下(使用iPhone 6,摄像头分辨率1280x720):
fx=1229
cx=360
fy=1153
cy=640
此代码为当前运行 iOS 9.1 的设备提供焦距和主要点的准确估计。
AVCaptureDeviceFormat *format = deviceInput.device.activeFormat;
CMFormatDescriptionRef fDesc = format.formatDescription;
CGSize dim = CMVideoFormatDescriptionGetPresentationDimensions(fDesc, true, true);
float cx = float(dim.width) / 2.0;
float cy = float(dim.height) / 2.0;
float HFOV = format.videoFieldOfView;
float VFOV = ((HFOV)/cx)*cy;
float fx = abs(float(dim.width) / (2 * tan(HFOV / 180 * float(M_PI) / 2)));
float fy = abs(float(dim.height) / (2 * tan(VFOV / 180 * float(M_PI) / 2)));
注意:
我在使用此代码时遇到了初始化问题。我建议在初始化并正确设置值后,将它们保存到数据文件中并读取该文件以获取值。
【问题讨论】:
-
非常感谢。
-
我认为在 eqn 2* tan... 中,2 是错误的。按照这个:codeyarns.com/2015/09/08/… 和我的实验。
标签: ios opencv computer-vision augmented-reality iphone-6