有没有一种类似于ARKit提供的从ARCore获取相机内参参数的方法?我尝试使用ImageMetadata中的LENS_INTRINSIC_CALIBRATION,但显然这个常量实际上不被支持(我在Pixel 2上尝试过)。
CameraIntrinsics
是一个长期存在的对象,并且每次调用Session.update()
时,CameraIntrinsics
的属性可能会更新。public class CameraIntrinsics
受此处第一步描述的启发,我尝试了几件事情,成功地找到了ARCore APK中支持设备的内在参数。您需要获取apktool并在下载ARCore APK(例如v1.2)的同一文件夹中运行此操作:
apktool -q d -s -r ARCore_1_2.apk -o ARCore_1_2
这将创建一个名为ARCore_1_2的文件夹,然后进入./lib/arm64-v8a
并解压缩libdevice_profile_loader.so
(例如使用7zip)到一个新文件夹中以方便操作。然后,使用文本编辑器打开新创建的文件夹中的.rodata
文件。该文件的大部分内容都是格式化为XML的,只需查找您正在使用的手机名称,并在标签内找到固有参数即可。还有一些IMU校准数据和外参,但不清楚它们如何使用。
我自己还没有测试过这些参数,但会在接下来的几天内进行测试...
实际上,LENS_INTRINSIC_CALIBRATION
在Pixel 2中是支持的。您只需要确认您的APK可以访问相机。您可以通过进入设置手动授予应用程序权限。
目前您可以使用投影矩阵来获取fx,fy,cx,cy
。但是,畸变是无法获得的,尽管有可能图像已经被校正。