我最近开始使用pylibfreenect2在Linux上使用Kinect V2.
当我第一次能够在散点图中显示深度帧数据时,我很失望地看到没有任何深度像素似乎在正确的位置.
我做了一些研究,并意识到有一些简单的触发来完成转换.
为了测试,我开始使用pylibfreenect2中的预编写函数,该函数接受列,行和深度像素强度,然后返回该像素的实际位置:
X, Y, Z = registration.getPointXYZ(undistorted, row, col)
Run Code Online (Sandbox Code Playgroud)
使用getPointXYZ()或getPointXYZRGB()的唯一缺点是它们一次只能处理一个像素.这在Python中可能需要一段时间,因为它需要使用嵌套的for循环,如下所示:
n_rows = d.shape[0]
n_columns = d.shape[1]
out = np.zeros((n_rows * n_columns, 3), dtype=np.float64)
for row in range(n_rows):
for col in range(n_columns):
X, Y, Z = registration.getPointXYZ(undistorted, row, col)
out[row * n_columns + col] = np.array([Z, X, -Y])
Run Code Online (Sandbox Code Playgroud)
我试图更好地理解getPointXYZ()如何计算坐标.据我所知,它看起来类似于OpenKinect for Forfor函数:depthToPointCloudPos().虽然我怀疑libfreenect2的版本还有更多内容.
使用该gitHub源代码作为示例,然后我尝试在Python中重新编写它以进行我自己的实验,并出现以下内容:
#camera information based on the Kinect v2 hardware
CameraParams = {
"cx":254.878,
"cy":205.395,
"fx":365.456,
"fy":365.456,
"k1":0.0905474, …Run Code Online (Sandbox Code Playgroud) 我刚刚在OSX 10.11.5上设置了libfreenect2,我可以成功运行显示RGB/IR /深度流的Protonect演示,但我也想使用OpenNI/NITE进行骨架跟踪.
我按照repo的README文件中的说明进行了OpenNI,但是当我尝试运行NiViewer时,我得到了这个:
NiViewer
openDevice failed:
DeviceOpen using default: no devices found
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
目前我经历libfreenect2问题在GitHub和记录我尝试和成果在这里.任何提示/提示都很有帮助.
在OSX上使用Kinect v2使用libfreenect2设置和测试OpenNI/NITE的最简单方法是什么?
原来我的时候,我应该一直在使用NiTE2.2我只是复制使用NITE 1.5 libfreenect2-openni2.0.dylib从libfreenect2/build/lib给NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI2/Drivers/然后跑了SimpleUserTracker样品和它的工作!
还有一个问题:只打印到控制台的样本运行,但打开窗口和渲染的样本不起作用.没有窗口呈现,好像该线程以某种方式被阻止.那是我使用集成的Intel GPU的时候.如果我使用离散的nVidia GPU,应用程序崩溃:
./UserViewer
124095 INFO New log started on 2016-08-30 20:32:19
124114 INFO --- Filter Info --- Minimum Severity: VERBOSE
126001 VERBOSE No override device in configuration file
126029 VERBOSE Configuration has been read from '/Users/George/Downloads/Grouped/Projects/code+libs/NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI.ini'
126034 VERBOSE OpenNI 2.2.0 (Build 21)-MacOSX …Run Code Online (Sandbox Code Playgroud)