问题标签 [perspectivecamera]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 在 Matlab 中计算 opencv 透视变换时出错
我正在尝试使用mexopencv将特征匹配和单应性重新编码。Mexopencv将 OpenCV 视觉工具箱移植到 Matlab 中。
我在 Matlab 中使用 OpenCV 工具箱的代码:
错误:
问题从检查开始perspectiveTranform(boxCorners, H)
,直到发现homography
它很好。另请注意,在从样本和场景计算匹配坐标时,我从2:end
, 开始索引box = [boxPoints([matches(2:end).queryIdx]).pt]
,因为访问queryIdx
第一个元素的 将产生无法访问的第零个位置。不过,我认为,这不会是一个问题。无论如何,我期待我的解决方案的答案。谢谢。
PS:这是我在这里的原始帖子的编辑版本。我在下面收到的解决方案不够充分,并且该错误不断重复。
第二次更新:
根据@Amro,我已经更新了我的代码,如下。内点给出了很好的响应,但是计算透视变换的坐标不知何故被扭曲了。
输出很好,但是perspectiveTranform
没有给出适合问题的正确坐标。到目前为止我的输出:
第三次更新:
我已经让所有的代码都在运行并且对单应性很好。然而,一个角落里的情况让我很难受。如果我这样做imgObj = imread('D:/pic/box.png')
,imgScene = imread('D:/pic/box_in_scene.png')
我会得到很好的单应矩形,但是,当我这样做时imgScene = imread('D:/pic/box.png')
,即对象和场景是相同的,我会得到这个错误 -
现在,我过去遇到过这个错误,当ptsObj
or的数量ptsScene
很低时会发生这种情况,例如,当场景只是白/黑屏幕时,该场景的关键点为零。在这个特殊的问题中,有大量的ptsObj
和ptsScene
。问题出在哪里。我已经使用SURF
相同的错误 resurfacing 测试了这段代码。
three.js - three.js TextGeometry:重新设置旋转后文本对齐变得混乱
我创建了三个。TubeGeometry 并使用 THREE.TextGeometry 将文本添加到创建的管中。然后将管添加到场景中。此外,我已将文本旋转设置为相机旋转。代码片段如下
我的应用程序有一个按钮,通过它我可以重置管几何的原始位置。在内部,这是通过将相机重置到其原始位置来完成的。
最初,当页面加载时,管和文本正确对齐并面向用户。但是当我旋转管并将其重置到原始位置时,管正确地回到原始位置,但文本随机朝向任何方向。
我的基本要求是文本应该始终面向用户。我已按照另一个相关查询中提到的步骤进行操作:
但即使我按照建议的方式编码,我也面临上述问题。请指出我缺少什么?
注意:我正在使用透视相机。
opencv - 使用一台单声道校准相机进行人体身高估计
我正在研究一种算法来估计视频中检测到的人的高度,但我被卡住了。
我工作的部分是使用 HoG 算法检测人,所以我为框架中的每个人都有一个边界框。而且我已经校准了相机,所以我有我的内在和外在相机参数。
问题是现在我有一个带有 2 个未知数的透视投影公式:物体的高度和物体到相机的距离。我正在使用一个单声道网络摄像头来检测人,所以我没有关于物体到摄像头距离的信息。高度是我要估计的,所以我也没有。
我知道如果我使用 kinect 或立体摄像头来获取距离,这个问题是可以解决的,但我仅限于一个单声道网络摄像头。
有谁知道如何解决这个问题?我已阅读有关使用引用对象的信息,但我不知道如何使用它们来解决我的问题。
opengl - gluPerspective 在角落有消失点。开放式
我正在使用 pyglet:http ://www.pyglet.org/来使用 opengl。但是,我有一些问题。
我的消失点出现在屏幕左下角(0,0)的角落。下图应显示说明这一点:http: //i.imgdiode.com/0wu5E0.png
左边是我现在看到的立方体。右边是它应该如何(我希望它如何)看起来。我怎样才能做到这一点?
另外,我读了一些关于矩阵模式的文章,似乎 GL_PROJECTION 应该与 gluPerspective 一起使用。但是,当我将它们一起使用时,透视效果就消失了。只有在 GL_MODELVIEW 中 gluPerspective 才能工作。我很困惑为什么会这样。
以下是我用来显示对象的代码。
opengl - glFrustum、gluPerspective 和 FOV
我有一个程序来做增强现实,我在 OpenGL 中使用:
没关系,我得到了很好的视角,并且我的 3D 对象很好地插入了我的照片。现在我希望能够放大/缩小。通常,它是通过更改 gluPerspective 中的 fov 来完成的,但我不使用 gluPerspective,因为我无法获得良好的插入。
使用http://dmi.uib.es/~josemaria/files/OpenGLFAQ/transformations.htm,问题“9.085 如何调用与我对 gluPerspective() 的调用相匹配的 glFrustum()?”,我尝试了:
void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
void gluPerspective(GLdouble fovy, GLdouble aspect,GLdouble near, GLdouble far);
接着 :
但是我的对象被扭曲了,它没有在所有轴上正确缩放,没有保持比例。
那么我需要做什么/修改我的 glFrustum 参数以获得放大/缩小效果?
rotation - 在 Direct3D9 上切割的旋转立方体
我试图在 Direct3D9 上显示一个旋转的立方体。我可以成功绘制它,但是在旋转过程中没有绘制一些像素。我想在旋转过程中展示立方体的每个部分。每个面的大小为 0.5f,并且从点 0、0、0 随 Pitch Yaw Roll 旋转。我尝试禁用 Z 缓冲区或设置视口的高 Z 值但没有成功。有什么建议吗?哦,我正在以线框模式渲染它。
编辑:我确认问题出在 Z 缓冲区上。我试图在 Z 轴之间平移立方体,很明显视图在 0.0 和 1.0 之间,但 SetViewport 并没有改变它,我不明白为什么......
编辑:如果我禁用 ZBUFFER,顶点仍然会被切割。我尝试使用参数 (m, 90, 800 / 480, -0.1, 100) 使用
此实现 ( http://pastebin.com/EVCRG6f7 ) 设置一个新的投影矩阵,但问题仍然存在。
编辑:我尝试使用 OpenGL 使用在 Direct3D9 上使用的相同顶点和视图矩阵,并且我的立方体正确绘制。我用这些值初始化它:
python - Opencv:好的点匹配但错误的单应性
我正在尝试提取两个图像之间的单应矩阵。原始平面图像和包含第一个平面图像的另一个图像。我正在按照本教程https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html#feature-homography中的步骤进行操作。
找到的匹配看起来很棒,但是在绘制包含图像的框时,它看起来不对,因为它不包含图像......但是其中一个边框是好的......那么发生了什么?单应矩阵是错误的还是只是一个可视化问题?
我的一段代码如下所示:
编辑:将角落的顺序更改为:
我得到类似的东西:
这看起来有点不同,但仍然不是我所期望的。
python-2.7 - y/z 平面上的透视投影
因此,此维基百科页面向您展示了如何将 3d 空间中的点透视投影到 x/y 平面上。有谁知道如何在 y/z 平面上进行等效操作?这就是我现在正在做的事情(只是维基百科页面的东西。):
您可以在github repo中查看所有代码。特别是其中的文件是 shapes.py。
opengl - LWJGL 投影视图错误?
所以,我真的不知道如何解释我目前遇到的问题,但我知道它涉及用于绘制立方体的模型/视图/投影矩阵。我已经从搅拌机中导入了一个立方体,现在我正在尝试创建一个相机系统来从不同的角度查看。我首先将缩放、旋转和平移应用到立方体,然后将此矩阵发送到我的顶点着色器类,立方体出现在它应该出现的位置,大小正确,并且在我给它的任何方向上旋转。下一步是设置相机视图,所以我将立方体的当前世界坐标乘以一个视图矩阵,这样我就可以移动“相机”并从不同的方向看。所以现在我有了相机坐标,一切看起来都应该如此。立方体仍在旋转,当我更换“相机”时 立方体按应有的方向旋转。所以最后,当我将投影矩阵添加到着色器时,一切看起来都正常......最初。但是,我注意到立方体看起来不再正确了。我现在可以旋转/移动相机,但是立方体看起来变形了,一些面不是方形的。现在奇怪的是,如果我真的靠近立方体,几乎就像所有在外面的颜色都在里面,你可以看到一个完美的立方体形状。这是它正在做的事情的链接,因为这可能真的很难理解:但是立方体看起来变形了,一些面不是方形的。现在奇怪的是,如果我真的靠近立方体,几乎就像所有在外面的颜色都在里面,你可以看到一个完美的立方体形状。这是它正在做的事情的链接,因为这可能真的很难理解:但是立方体看起来变形了,一些面不是方形的。现在奇怪的是,如果我真的靠近立方体,几乎就像所有在外面的颜色都在里面,你可以看到一个完美的立方体形状。这是它正在做的事情的链接,因为这可能真的很难理解: http://youtu.be/QHY7ZVADeiQ。下面是我用来变换立方体的代码 (ModelTransformation)、相机类的代码以及我的顶点着色器的设置方式。任何想法将不胜感激。我为巨大的代码块道歉。
模型转换类:
相机类:
顶点着色器:
编辑:添加了更多可能有帮助的类并添加了更多标签
渲染实用程序类:
游戏类:
coordinates - JavaFX JDK 8:围绕坐标系转动相机时,而不是鼠标坐标
我非常坚持我的应用程序,我没有看到任何有人在做我正在做的事情的例子。 https://www.dropbox.com/sh/lqzoegg5v8drzog/nLxDuIVAh0
我有一个 3D 世界,我将 TriagleMesh 对象从 STL 文件加载到 3D 世界中。3D 世界是使用 Oracle 使用 xforms 的许多示例创建的。我可以在 3D 世界中转动相机,一切都很好。
当 3D 世界向右有 X+ 并且我用鼠标向右移动我的对象时,对象实际上是向右移动的。当我转动世界以使 X+ 向左移动时,当我将鼠标向右移动时,对象向左移动
应用程序当前在 MouseEvent 拖动事件处理程序上使用 getScreenX 和 getScreenY。我已经尝试过 getSceneX 和 getSceneY 并且它的行为方式相同。当我使用 getX 和 getY 时,对象会到处乱跳,从 getX 和 getY 返回的坐标会不断变化。这很可能是因为对象正在移动,并且 getX 和 getY 坐标返回鼠标在移动之前相对于对象的位置。假设我确实使用了 getX 和 getY 并且我旋转了对象,然后它的坐标系发生了变化。如果它在右边有 X+,它将在左边。因此,如果我然后尝试将对象向右移动,它会向左移动
我想我需要使用 getScreenX/Y 然后根据相机的旋转以某种方式转换鼠标坐标。我将如何在 JavaFX 中做到这一点?
编辑 1 排序
我在这个 jira https://javafx-jira.kenai.com/browse/RT-35178中获得了以下代码
我所做的是将拖动检测到的代码放在我的 Gizmo 对象中。Gizmo 会将 MouseTransparent 设置为 true 并 startFullDrag。然后它调用 GizmoViewer 以便 GizmoViewer 可以设置 mousePlane MouseTransparent。这允许鼠标平面而不是 Gizmo 检测到拖动。我还在 GizmoViewer 中设置了一个标志 dragJustStarted = true; 然后当我开始拖动并且在 mousePlane 上触发 OnMouseDragOver 时,它将设置 mouseOldX、mousePosX、mouseOldY、mousePosY 的值,如果它检测到这是第一次执行拖动,它将退出。当拖动再次执行时,我拥有所有正确的鼠标值,我可以微笑着拖动
鼠标平面的设置
检测到 Gizmo/屏幕对象拖动
释放 Gizmo 鼠标(对这个问题很重要的方法刚刚开始)
小工具查看器