【问题标题】:How to initialize multiple OpenNI sensors with OpenCV如何使用 OpenCV 初始化多个 OpenNI 传感器
【发布时间】:2013-02-20 15:11:50
【问题描述】:

我想将两个 Asus Xtion Pro 传感器与 OpenCV (2.4.4) 一起使用,但不知道如何初始化这两个设备。

我可以像这样初始化一个:

VideoCapture capture;
capture.open(CV_CAP_OPENNI);

如何为两个独立的传感器初始化两个 VideoCapture 实例?

【问题讨论】:

  • 我找到了这个语句,但是我之前没有尝试过这个动作:“如果系统连接了多个传感器,那么你应该首先调用OpenNI::getDeviceInfoList()来获取所有的列表活动设备。然后,在列表中找到所需的设备,并通过调用 DeviceInfo:getUri() 获取其 URI。将此函数的输出用作 Device:open() 的调用参数,以打开该特定设备。
  • @EvilClosetMonkey 这是使用 OpenNI2 还是原来的/v1 ?
  • 它似乎是 v2。资料来源:openni.org/openni-programmers-guide ...虽然我刚刚意识到我脑子有问题——意识到你正在寻找在 OpenCV 中打开这些流。我的链接显然在那里没有多大帮助。对不起;早上第一次来SO,咖啡太少了。

标签: opencv kinect openni asus-xtion


【解决方案1】:

原来就是这么简单:

VideoCapture sensor1;sensor1.open(CV_CAP_OPENNI_ASUS);
VideoCapture sensor2;sensor2.open(CV_CAP_OPENNI_ASUS+1);

一个非常基本的可运行示例是:

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>

using namespace cv;
using namespace std;

int main(){
cout << "opening device(s)" << endl;

VideoCapture sensor1;sensor1.open(CV_CAP_OPENNI_ASUS);
VideoCapture sensor2;sensor2.open(CV_CAP_OPENNI_ASUS+1);

if( !sensor1.isOpened() ){
    cout << "Can not open capture object 1." << endl;
    return -1;
}

for(;;){
    Mat depth1,depth2;

    if( !sensor1.grab() ){
        cout << "Sensor1 can not grab images." << endl;
        return -1;
    }else if( sensor1.retrieve( depth1, CV_CAP_OPENNI_DEPTH_MAP ) ) imshow("depth1",depth1);

    if( !sensor2.grab() ){
        cout << "Sensor2 can not grab images." << endl;
        return -1;
    }else if( sensor2.retrieve( depth2, CV_CAP_OPENNI_DEPTH_MAP ) ) imshow("depth2",depth2);

    if( waitKey( 30 ) == 27 )   break;



   }
}

【讨论】:

  • 如果您希望一个特定的相机始终是相机 1,而另一个相机始终是相机 2?
  • 对于 OpenCV,我猜 CV_CAP_OPENNI_ASUS 将是第一个连接的传感器,CV_CAP_OPENNI_ASUS+1 将是第二个,但我会先对其进行测试。此外,您可能不想依赖传感器的连接顺序。不幸的是,OpenCV 的 VideoCapture 没有用于检索设备名称/ID 的 API,因此您可能需要转到 lower level to list the devices 并获取名称/序列号/索引/等。
猜你喜欢
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多