我正在使用OpenCV捕获Ubuntu 14.04中的两个USB网络摄像头(Microsoft LifeCam Studio)的视频流.我使用的是非常简单的视频卡代码(在这里来源),并且正在尝试至少查看两个与每个视频相对于每个视频其他. 我使用了Android stopwatch应用程序(框架可能在50%的时间内同步.我得到的框架时间差异是从0到300ms,平均约120ms.似乎使用的超时对同步的影响很小(对于1000ms或2000ms的同步).我试图最大程度地减少超时(Waitkey(1)以使OpenCV循环完全工作)并阅读循环的每一个XTH迭代 - 这给出了Waitkey(1000)的结果.我以全能运行,但将分辨率降低到640x480没有效果. 理想的结果将是具有X fps的100%同步立体视频流.正如我所说,我到目前为止使用OpenCV来查看视频静止图像,但我不介意使用其他任何内容来获得所需的结果(也可以在Windows上). 感谢提前的帮助! 编辑:在我搜
以下是关于 stereo-3d 的编程技术问答
在此示例中: https://glitch.com/~query-aframe-cameras 我已经注册了一个组件,该组件朝着用户所寻找的方向启动弹丸(有点提升) Spacebar或Screen Tap要启动 - 确保在地平线上方看! 它在移动VR(立体相机)模式中失败: 弹丸继续发射,但由于单声道的默认方向,而不是立体声摄像机 我正在使用: var cam = document.querySelector('a-scene').camera.el.object3D; var camVec = new THREE.Vector3(); var camDir = cam.getWorldDirection(camVec); 获取相机信息并吐回弹丸 查询: 我如何获得立体声相机信息 解决方案 问题将是由于此错误在three.js中. 遵循记录的解决方法,此处的代码可以在我的任务2上使用正确的方向跟踪. (这里还有其他几个更改:要在我的VR耳
处理旨在使Java的绘画变得更加容易. Android的处理具有其桌面同胞以及传感器的信息的力量.将这些东西放在一起,不容易显示立体图像并像Oculus Rift或Google Cardboard一样四处移动? 解决方案 下面的代码在两个视口上显示一个图像 - 一个用于左眼,另一个用于右眼.结果是从Google纸板设备查看时,图像看起来3D.加速度计和陀螺仪数据用于移动头部时移动3D图像.唯一的错误是在该景观模式下为Android处理的错误,如果您不以此模式启动程序,则该程序会崩溃.我正在使用Processing 2.0.3和Android 4.3,因此当前版本可能已经解决了此问题. (尽管我确实看到这仍然是在Github上的处理袋讨论中的一个公开问题).纹理图像是最喜欢的卡通角色的100 x 100像素图像.您可以使用任何想要的东西 - 只需将图像存储在数据文件夹中即可. //Scott Little 2015, GPLv3 //pBoard is Processing
我正在尝试获取两个立体声图像的深度图. I have taken the code from 此文档. 我有以下错误: Traceback (most recent call last): File "depth.py", line 9, in stereo = cv2.createStereoBM(numDisparities=16, blockSize=15) AttributeError: 'module' object has no attribute 'createStereoBM' 我的代码是: import numpy as np import cv2 from matplotlib import pyplot as plt imgL = cv2.imread('tsukuba_l.png',0) imgR = cv2.imread('tsukuba_r.png',0) stereo = cv2.createStere
我正在尝试制作一个应用程序,该应用程序使用JavACV/OPENCV的20FPS使用立体声视觉.我已经看到了一些相机的视觉,但所有人都很昂贵.我听说已经在谈论Minoru 3D?有人知道它是否与Javacv一起使用? 任何人都知道什么样的相机用于这个? 解决方案 您不需要任何特别的东西.我在大学的机器人实验室担任研究助理,是本科生,并以便宜的方式做事几乎是工作描述的一部分. 对于立体视频,您需要的只是两个相机...就是这样!理想情况下,具有相同规范,但是使用异质摄像机可能需要大量工作才能获得良好的结果,尤其是当它们具有不同的光学特性(而不是仅仅是传感器的大小,分辨率和RGB灵敏度).
我的学期项目是用大基线(〜2m)校准立体相机. 因此,我的方法是在没有精确定义的校准模式的情况下运行,例如棋盘,因为它必须很大并且很难处理. 我的问题与此相似:来自2张图像的3D重建,而没有信息 到现在为止: 转角检测左图goodFeaturesToTrack 精制角cornerSubPix 在右图像中查找角落位置calcOpticalFlowPyrLK 计算基本矩阵F findFundamentalMat 计算H1,H2整流同构矩阵stereoRectifyUncalibrated 纠正图像warpPerspective 计算差距sgbm 到目前为止,它可以通过,但是如果我更改角数,则可以在透视上"跳跃". 不知道如果形式不精确或错误是我疯狂的,还是由于没有已知的相机参数或没有镜头扭曲补偿而无法计算的(但也发生在tsukuba图片上.) 欢迎建议:) 但不是我的主要问题,现在我想重建3D点. 但是reprojectImageTo3D
我正在与 yolostereo3d 用于stereo3d对象检测(独自刻板)在KITTI数据集上,带有使用相同的Kitti数据集将骨干从重新结束更改为EDGENEXT之前,一切正常.但是,之后我开始出现以下错误: RuntimeError: Given groups=1, weight of size [8, 1024, 1, 1], expected input[8, 304, 9, 40] to have 1024 channels, but got 304 channels instead 这是我改变骨干的方式: class YoloStereo3DCore(nn.Module): """ Inference Structure of YoloStereo3D Similar to YoloMono3D, Left and Right image are fed into the backbone in bat
长话短说: 我在此处遵循了本教程和Pygame 1.9.2的文档.根据两者,应该以立体声模式调整左和右耳机的音量,但是,它对我来说根本不起作用.无论我尝试什么,听起来在任何一种耳机上都可以听到. 在这里我的尝试: 短序言:我使用 pygame.mixer.pre_init(44100, -16, 2, 3072) 这实际上应该为我的系统启用PyGame的立体声声音,但也许我已经在这里犯了一个错误,所以我提到了它. 尝试1: class MainProgram(object): def __init__(self, width = 640, height = 640): # Much Code # Sounds self.testsound = pygame.mixer.Sound("data\\sounds\\ping.ogg") self.chan1 = pygame.mixe
我想扭曲和纠正立体声图像.为此,我在Python 2.7中使用了OpenCV 3.3.我使用的代码是: import cv2 import numpy as np cameraMatrixL = np.load('mtx_left.npy') distCoeffsL = np.load('dist_left.npy') cameraMatrixR = np.load('mtx_right.npy') distCoeffsR = np.load('dist_right.npy') R = np.load('R.npy') T = np.load('T.npy') imgleft = cv2.imread('D:\python\camera calibration and 3d const\left\left60.png',0) imgright = cv2.imread('D:\python\camera calibration and 3d const\Right/right6
我正在使用立体声系统,所以我试图通过三角剖分来获得某些点的世界坐标. 我的摄像机呈一个角度,z轴方向(深度的方向)与我的表面不正常.这就是为什么当我观察平坦的表面时,我没有恒定的深度,而是"线性"变化,正确吗?我想要从基线方向的深度...如何重新投影? 我的代码的一部分带有我的投影阵列和三角形功能: #C1 and C2 are the cameras matrix (left and rig) #R_0 and T_0 are the transformation between cameras #Coord1 and Coord2 are the correspondant coordinates of left and right respectively P1 = np.dot(C1,np.hstack((np.identity(3),np.zeros((3,1))))) P2 =np.dot(C2,np.hstack(((R_0),T_0))) for
我正在研究depth map with OpenCV.我可以获得它,但是它是从左相机起源重建的,后者有一点倾斜,正如您在图上看到的,深度是"移动的"(深度应接近,没有水平梯度): 我想以零角度表达它,我尝试使用扭曲的透视函数,如下所示,但我获得了一个空字段... P = np.dot(cam,np.dot(Transl,np.dot(Rot,A1))) dst = cv2.warpPerspective(depth, P, (2048, 2048)) with: #Projection 2D -> 3D matrix A1 = np.zeros((4,3)) A1[0,0] = 1 A1[0,2] = -1024 A1[1,1] = 1 A1[1,2] = -1024 A1[3,2] = 1 #Rotation matrice around the Y axis theta = np.deg2rad(5) Rot = np.zeros((4,4)) Rot[
我正在尝试使用未校准的方法获得深度图. 我可以通过使用SIFT查找通讯点,然后使用cv2.findFundamentalMat来获得基本矩阵.然后,我使用cv2.stereoRectifyUncalibrated获取每个图像的同构矩阵.最后,我使用cv2.warpPerspective来纠正和计算差异,但这并不能创建良好的深度图.值很高,所以我想知道我是否必须使用warpPerspective,或者我是否必须从使用stereoRectifyUncalibrated的同型矩阵中计算旋转矩阵. . 我不确定使用stereoRectifyUncalibrated获得的均匀矩阵的射击矩阵. 代码的一部分: #Obtainment of the correspondent point with SIFT sift = cv2.SIFT() ###find the keypoints and descriptors with SIFT kp1, des1 = sift.detect
我正在研究C ++和OpenGL中的立体镜应用(用于医疗图像可视化).据我了解,这项技术是大约10年前的大新闻,但此后似乎已经消失了.现在,许多公司似乎都在投资于技术... 立体镜也称为" 3D立体声",主要由Nvidia(我认为). . 在我们如何可视化事物方面,是否有人将立体镜视为主要技术?我既有娱乐和专业的能力. 解决方案 带有毫无疑问,这将是下一件大事.至少在娱乐中. 其他解决方案 可能回来的原因之一是由于我们知道有足够高的刷新屏幕,因此3D是可能的.我想我读到您需要3D-TV大约100Hz的某个地方.因此,不再需要笨重的眼镜. 编辑:重申:您不再需要眼镜才能拥有3D电视.这篇文章几周前发表在瑞典杂志上:http://www.nyteknik.se/nyheter/it_telekom/tv/article510136.ece . 基本上所说的是,您使用屏幕上带有垂直镜头的技术而不是眼镜. CRT的问题是它们不是平坦的.我们更现代的平面屏幕显然没有
我有一个OpenGL应用程序,该应用程序通过HDMI将立体3D视频输出到现成的电视,但目前需要显示显示以支持1.4A前手动选择正确的格式(并非侧面,,顶部等等).但是,现在我有一个需要支持仅支持HDMI 1.4A 3D信号的设备,据我所知,这是发送到显示器的某种数据包,它告诉它3D视频的格式.我正在使用. NVIDIA Quadro 4000,我想知道是否可以以标准3DTV看到正确格式的方式输出我的视频(或告诉视频卡),类似于3D Blu-ray或其他1.4A - 兼容设备,而无需手动选择特定的3D模式.这可能吗? 解决方案 我看不到这个问题的直接答案. HDMI 1.4A定义了元数据来描述3D格式. Video_format 010表示3D 3D_TRUCTURE 0000框架包装,0110顶部,1000侧面 但是,如果驱动程序没有API,则需要更改其代码(假设其已打开或访问) 其他解决方案 如果您的驱动程序允许它,则可以创建一个Quad-Buffer立体声
我编写了一个代码,以从两个图像"左"和"右"找到差异图;并将地图保存在"立体声"中.该代码对我来说似乎还可以,但我以某种方式例外: 在终端窗口上: openCV错误:未知函数中的错误参数(未知数组类型),文件...... \ src \ opencv \ modules \ core \ core \ src \ src \ matrix.cpp,line 698 代码是 Mat left = imread( "files\\left.jpg" ); Mat right = imread( "files\\right.jpg" ); Size size = left.size(); namedWindow( "left", CV_WINDOW_AUTOSIZE ); imshow("left", left); cvNamedWindow( "right", CV_WINDOW_AUTOSIZE ); imshow("right", right); Mat lef
我正在使用OpenCV SGMB进行立体声差异计算,以重建放在表上的一些简单对象.一切或多或少都奏效了,除了在对象的边缘上,我发现一些离群值以背景的颜色粘附.问题是我认为SGBM不匹配该背景点,这些点是对象边缘边缘的邻居,并且它们具有与这些边缘相同的差异值. 这是一个例子 您可以看到地板上的一些图像被卡在对象上.我正在使用SGBM参数的标准值: int sgbmWinSize = 3;//size of the window to be matched int numberOfDisparities = 256; //number of different disparity values in pixels int cn = inputImage1.channels(); sgbm.minDisparity = -128; //minimum possible disparity value in pixels sgbm.SADWindowSize = sgbmWinS
我有一些代码,可以用CV :: StereRectifyUncaligrated计算所有零件.但是,我不确定从那里去哪里获得3D点云. 我的代码可与校准版本一起使用,该版本给我一个Q矩阵,然后我将其与reprojectimageto3d和stereobm一起使用,以给我一个点云. 我想比较两种不同方法的结果,因为有时我将无法校准相机. 解决方案 .它具有一个代码,该代码将差异图像转换为使用PCL的点云,并在3D Viewer中显示. 由于您有Q,两个图像和其他相机参数(来自校准),因此应使用ReprojectTo3D获得深度图. 使用StereoBM或stereoSGBM获取差异图并使用该拆卸图和Q获取深度图像. StereoBM sbm; sbm.state->SADWindowSize = 9; sbm.state->numberOfDisparities = 112; sbm.state->preFilterSize = 5; sbm.stat
openCV中是否有一个简单的功能可以从立体声摄像机对获得3D位置和对象的姿势? 我有摄像头和基线用国际象棋板校准.我现在想采用一个已知的对象,例如同一棋盘,在其自己的坐标中具有已知的3D点并找到现实世界位置(在摄像机坐标中). 对于单个相机(位置)和功能可以找到整个场景的3D差异图像. 进行几乎相同的过程与相机校准相同,并在相机对中找到棋盘 - 但是我找不到任何功能,可以采用对象 +映像坐标并返回立体声对的摄像头坐标. 谢谢 解决方案 校准立体声相机系统后,您在两个相机之间获得了相对姿势(=翻译+方向).使用其他解决方案 是的,stereobm_create(): import numpy as np import cv2 as cv from matplotlib import pyplot as plt imgL = cv.imread('tsukuba_l.png',0) imgR = cv.imread('tsukuba_r.png',
我正在尝试编写一些将计算基本矩阵的代码,以确定立体声图像之间的关系.我从大多数人推荐的Hartley和Zisserman书籍开始,但是它没有任何实际示例,示例代码是在MATLAB中,我没有.然后,我切换到 3D计算机视觉技术和算法的简介是更实用,其中有实际示例.我使用Python和Numpy实现了推荐的8点算法,但是我在验证其有效性时遇到了麻烦. 我正在使用该书的第48页上列出的数据集(使用上面的链接查看Google书籍摘录).当我将要点归一化时,我会得到与那本书相同的结果.但是,当我使用numpy的SVD函数计算基本矩阵时,我会得到f: 的以下值 [[-0.01851684 -0.21631176 -0.67036356] [ 0.2605251 -0.01023853 0.14234079] [ 0.63748775 -0.09404508 -0.00220713]] 此矩阵满足方程 p_r^ * f * p_l = 0 ,因此看起来正确.但是,它与书中计算的矩