opencv - 在opencv中计算相机的位置和方向

标签 opencv

想象一下,有一个摄像头正在注视着您的计算机屏幕。我想要做的是确定相机旋转了多少,它离屏幕有多远,以及它相对于屏幕中心的位置。简而言之,旋转和平移矩阵。

我正在使用 opencv 来执行此操作,并按照他们的相机校准示例使用棋盘图案和来自网络摄像头的帧来执行此任务。我想处理任何通用图像,即屏幕截图和网络摄像头的框架。

我曾尝试使用特征检测算法从两个图像中获取关键点列表,然后将这些关键点与 BFMatcher 进行匹配,但遇到了问题。具体而言,SIFT 无法正确匹配关键点,而 SURF 无法在缩放后的图像上正确找到关键点。

这个问题有更简单的解决方案吗?我觉得这是人们做过的常见事情,但在网上没有找到太多讨论。

谢谢!!

最佳答案

寻找自然平面标记是计算机视觉中的一项常见任务,但在您的情况下,您的屏幕会根据您在屏幕上看到的内容而有所不同,它可以是您的桌面、浏览器、电影……

所以你不能用通常的方法来检测标记,你应该尝试形状识别。一个想法是在屏幕框架的相同尺寸(通过不同比例)的矩形模板上尝试粒子过滤器,应用第一个边缘检测。

粒子过滤器将使模板适合框架区域。这样做之后,您就会知道位置。对于方向,您需要计算单应性,为此您需要“标记”中的 4 个点,因此您可以应用直接线性变换(cv::findHomography() 为您完成)。所以你的四个点可以是四个角。 这只是一个想法,祝​​你好运!

关于opencv - 在opencv中计算相机的位置和方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085526/

相关文章:

opencv - SolvePnP - 平面物体的姿态估计 - 模棱两可的情况

python - 旋转图像后获取(x,y)点(python,openCV)

c++ - 优化数据结构,以便它们利用虚拟内存

python - 将矩形图像调整为正方形,保持比例并用黑色填充背景

python - 通过在 OPENCV 和实时视频中使用固有矩阵和畸变系数来进行相机校准

Python Opencv - 无法更改图片的像素值

c++ - 罗德里格斯转换为欧拉角,反之亦然

cvNamedWindow 销毁任何以前的窗口

c++ - C++ 中 vector 下标超出范围

python - 如何在Django中使用FileSystemStorage上传OpenCV修改的图像文件?