android - OpenCV:从已知大小的正方形中查找像素宽度

标签 android c++ opencv

在 OpenCV 中,我使用摄像头捕捉包含两个正方形 ab 的场景,它们与摄像头的距离相同,其已知实际大小为, 10cm 和 30cm 分别。我找到了每个正方形的像素宽度,假设是 25 和 40 像素(为了获得“像素宽度”,OpenCV 将正方形检测为 cv::Rect 对象,我读取了它们的 宽度字段)。

现在我从场景中移除正方形 a 并更改从相机到正方形 b 的距离。程序现在得到正方形 b 的宽度,假设是 80。是否有一个方程式,使用相机的配置(分辨率,dpi?),我可以用它来计算出相应的内容如果正方形 a 放回场景中与正方形 b 的像素宽度相同?

最佳答案

您的问题所需的数学可以在“计算机视觉中的多 View 几何”的第 9 章中找到,该书恰好可以在线免费获得:https://www.robots.ox.ac.uk/~vgg/hzbook/hzbook2/HZepipolar.pdf .

对您的问题的简短回答是: 不,不是这种格式。鉴于您在 3D 世界中工作,您还剩下一个自由度。因此,您需要获取更多信息以消除这种自由度(例如,通过了解深度和/或两个正方形彼此之间的关系、相机的移动……)。这个主要看你的具体情况。无论如何,阅读和理解本书的第 9 章应该对您有所帮助。

PS:对我来说,您的问题似乎属于更广泛的“基线匹配”问题类别。除了对极几何和基本矩阵之外,阅读相关内容可能会对您有所帮助。

关于android - OpenCV:从已知大小的正方形中查找像素宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761350/

相关文章:

android - 工具栏标题左侧有很多额外的填充

android - 在创建位图之前计算位图是否适合内存

java - Retrofit 2 中同步请求和异步请求哪个更好

c++ - 您可以在不重新打开重新打开 win32 窗口的情况下执行需要提升的任务吗?

c++ - Sql Like在c++中的类似用法

c++ - 不提供显式析构函数是不是不好的做法?

opencv - 图像倾斜 - 无法使用 CV2 检测水平线

android - 无法使用正确的 google-services.json 文件在 Android 上接收 FCM 推送通知

c++ - Alpine docker 容器中简单 OpenCV 程序的链接器错误

c++ - 带有网络摄像头 c930e 罗技的 OpenCv