Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenCV将图像投影到笔记本上_Opencv_Computer Vision_Projection_Homography - Fatal编程技术网

使用OpenCV将图像投影到笔记本上

使用OpenCV将图像投影到笔记本上,opencv,computer-vision,projection,homography,Opencv,Computer Vision,Projection,Homography,我正在尝试实现一个应用程序,使用OpenCV、网络摄像头和投影仪将图像投影到笔记本的页面上。为了实现这一目标,我正在采取以下步骤: 我使用网络摄像头来检测页面的四个角点 在相机图像的四个角点和它们在我桌子上的投影之间学习单应性,如相机中所示。通过使用逆变换,我将能够知道我应该在相机图像上的什么地方绘制一些东西,以便投影“结束”在所需的位置 我正在对检测到的页面四个角点应用逆变换 我正在将所需的图像扭曲到新的、经过变换的点集 到目前为止,如果笔记本放在我的桌子上,并且完全打开,它工作得很好。如图所

我正在尝试实现一个应用程序,使用OpenCV、网络摄像头和投影仪将图像投影到笔记本的页面上。为了实现这一目标,我正在采取以下步骤:

  • 我使用网络摄像头来检测页面的四个角点
  • 在相机图像的四个角点和它们在我桌子上的投影之间学习单应性,如相机中所示。通过使用逆变换,我将能够知道我应该在相机图像上的什么地方绘制一些东西,以便投影“结束”在所需的位置
  • 我正在对检测到的页面四个角点应用逆变换
  • 我正在将所需的图像扭曲到新的、经过变换的点集
  • 到目前为止,如果笔记本放在我的桌子上,并且完全打开,它工作得很好。如图所示:

    但如果我试图关闭一侧(或两侧),则会发生以下情况:

    看到问题了吗?在第一张图片中,图像与页面边缘完全对齐,如果您旋转或平移笔记本,同时将其放在桌上,图像将保持不变。但在第二幅图像中不会出现这种情况,因为图像的上边缘不再与页面的上边缘平行(图像变得越来越倾斜)

    谁能解释一下我为什么会遇到这个投影问题,或者至少给我指出一些我可以阅读的资源?我需要指出的是,投影仪和网络摄像头放在笔记本电脑的上方和左侧,而不是它们的上方


    欢迎任何提示或建议。谢谢大家!

    您需要一种被称为关键石头修正的效果。您遇到的问题很可能是由于网络摄像机和投影仪的光轴、位置和焦距不同。我建议校准你的设置,这样你就可以知道他们的相对姿势,并将其纳入你的反向单应

    有趣的工作:)。那么,你的程序检测到了哪些角,全尺寸笔记本的四个角还是半尺寸笔记本的四个角?假设我们有兴趣投影到一个页面上,那么右边页面的四个角。我不明白你在步骤2中做什么。你说的是“摄像头图像”,这是网络摄像头图像还是要投影的图像?另外,如果你想在笔记本的页面上投射,你为什么会想到桌子上的拐角点的投影?对不起,也许这一步确实不够清楚。“摄像头图像”是网络摄像头图像。关于第二个问题,当你说“角点”时,你指的是笔记本页面的角点还是摄像头(网络摄像头)图像的角点?换句话说,我不明白你在第二步中所说的“他们在我桌上的投影,如摄像头中所见”是什么意思。顺便说一句,你似乎认为相机也是投影仪,因为你从来没有在你的4个步骤中提到投影仪。