2017-07-12 490 views
2

我正在使用python3和openni2。獲取攝像頭的序列號 - Openni2 python

當我打開與相機的通信(在這種情況下,我使用的是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

我完全不知道的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"; 
} 

最有可能的是可能有一個Python類包裝了底層的DeviceInfo類和它的能力,所以你可以要求Uri。

+1

嗨!謝謝你的答案。 我試過這個:dev.get_device_info() 它返回:OniDeviceInfo(uri = b'2bc5/0401 @ 1/2',vendor = b'Orbbec',name = b'Astra',usbVendorId = 11205,usbProductId = 1025) 我想問:什麼是uri,哪個是相機的id? –

+0

好的,我認爲uri字段包含您設備的唯一標識符。嘗試dev.get_device_info()。uri –

+1

我認爲uri是正確的id,但@ 1/2意味着這是兩個設備中的第一個,因爲如果我拔下插頭並再次將設備插入另一個usb,它會改變(1/3,1/4,ecc ..)。 但是dev.get_device_info()。uri的工作原理!謝謝!豎起大拇指給你:) –