在 OpenCV 中,我使用摄像头捕捉包含两个正方形 a 和 b 的场景,它们与摄像头的距离相同,其已知实际大小为, 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/