gpt4 book ai didi

android - 没有相机和失真矩阵的OpenCV resolvePnP

转载 作者:行者123 更新时间:2023-12-02 17:54:57 25 4
gpt4 key购买 nike

我正在尝试为女巫制作一个适用于Android的AR应用,用户将相机指向方形标记,并且3D模型应显示在标记上方。

我正在使用OpenCV来获取标记的旋转和平移。

要获得这两个矩阵,我使用solvePnP,为此我必须提供一个相机矩阵和一个
失真矩阵(据我了解)是每种相机类型专用的。
不幸的是,这对我来说是一个巨大的缺点,因为该应用程序应受大多数Android设备支持,而且我也无法要求用户运行相机校准程序(openCV提供的功能)。

那么问题来了:有没有一种方法可以消除相机和失真矩阵?或者,还有另一种方法可以计算相对于设备的标记3D位置?

我尝试了QCAR和Unity AR,但是(由于3D模型是从服务器下载的并且不断变化),所以我不得不使用OpenCV。

任何帮助将不胜感激。

谢谢。

最佳答案

对您来说是个坏消息。答案是确定的,不可撤销的,是很大的反对。

如果您对相机一无所知,那么您真的对图像一无所知。相机由两个矩阵描述:相机垫和变形垫。

但是..除了坏消息,还有一些好消息。你可以做点什么。

在许多AR应用程序中可以忽略失真矩阵。您只是不关心微小的失真。

如果您知道相机的视场,则可以轻松构建相机矩阵:
相机矩阵:

w/(2*tan(camera.fovX())), 0, w/2, 0,
0, h/(2*tan(camera.fovY())), h/2, 0,
0, 0, 1, 0

现在,您将说您的好坏改变了:您需要照相机,并且需要进行校准。好消息是,在android上,您可以 getHorizontalAperture()getVerticalAperture()或其他东西。光圈==视野。

最后,真正的坏消息是:在许多手机上,返回的值都不正确。因为制造商并不关心它。它返回假 Angular :10度下降,180度等。

祝好运!

关于android - 没有相机和失真矩阵的OpenCV resolvePnP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com