获取摄像头的序列号 - Openni2 python

时间:2017-07-12 12:18:32

标签: python python-3.x openni

我使用的是python3和openni2。

当我用相机打开通讯时(在这种情况下我使用的是Orbbec Astra),是否可以读取相机的序列号?

这就是我打开沟通的方式:

    dev = openni2.Device.open_any()
    depth_stream = dev.create_depth_stream()
    depth_stream.start()
    depth_stream.set_video_mode(c_api.OniVideoMode(pixelFormat = c_api.OniPixelFormat.ONI_PIXEL_FORMAT_DEPTH_100_UM, resolutionX = 320, resolutionY = 240, fps = 30))

我的目标是即使我更换了usb端口,每次都可以找到相同的相机,而且我已经连接了更多orrbec。

谢谢

2 个答案:

答案 0 :(得分:2)

我并不完全了解python版本,但在旧的OpenNI C ++库中,您可以使用类似于以下内容的方式查询设备ID:

openni::Array deviceList;
openni::OpenNI::enumerateDevices(&deviceList);

for(int i = 0; i != deviceList.getSize(); i++) {
   const openni::DeviceInfo& info = deviceList[i];
   std::string uri = info.getUri(); 
   cout << "URI " << i << ": " << uri << "\n";
 }

最有可能的是包含底层DeviceInfo类及其功能的python类,因此您可以请求Uri。

答案 1 :(得分:0)

import ctypes
from primesense import openni2  # , nite2
from primesense import _openni2 as c_api
serial_number = str(dev.get_property(c_api.ONI_DEVICE_PROPERTY_SERIAL_NUMBER, (ctypes.c_char * 100)).value)

您可能需要清理一下字符串。 (在orbbec astra上进行了测试)。

我使用以下链接获得了答案:

https://github.com/OpenNI/OpenNI2/blob/master/Include/OniProperties.h http://docs.ros.org/api/openni2_camera/html/openni2__device__manager_8cpp_source.html