我无法使用opencv同时打开2个gige(basler)相机

时间:2018-01-23 02:12:18

标签: c++ opencv camera

我在win10 opencv3.4上使用了两台GigE(basler aca2500-14gm)摄像机,我将两台摄像机的电线连接到交换机,然后将它连接到我的电脑。但我可以' t打开相机并同时获取相框。 我的代码: `

int main()
{
PylonInitialize();
VideoCapture cap(0);
VideoCapture cap1(2);

if (!cap.isOpened())
{
    cout << "Camera 1 unsuccessfully opened" << endl;
}
if (!cap1.isOpened())
{
    cout << "Camera 2 unsuccessfully opened" << endl;
}

bool stop = false;
while (!stop)
{

    Mat frame;
    Mat frame1;


    cap >> frame;
    cap1 >> frame1;

    if (frame.empty() || frame1.empty())
    {
        break;
    }


    imshow("Open the camera 1", frame);
    imshow("Open the camera 2", frame1);

    if (waitKey(100) >= 0)
    {
        PylonTerminate();//
        stop = true;
    }
}

}`

顺便说一句,当我尝试运行basler SDK的示例:Grab_MultipleCameras.cpp时, 我可以打开相机,但窗口中的图像是灰色的。

有没有人帮我解决这个问题? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

当您运行此basler SDK示例时,可能会发生第二个摄像头仍然无法打开但它只是显示带有defualt颜色(灰色)的窗口。

另一个可能的事情是你传递错误的设备ID以使VideoCapture工作,请参阅此内容 OpenCv VideoCap documentation。另外据我所知,如果你使用GigE相机,最好将每个相机的ip地址传递给VideoCapture

所以我只想在你的代码中尝试改变一个想法:

VideoCapture cap(0);
VideoCapture cap1(2);

要:

VideoCapture cap(/*camera Ip Address*/);  //or try with different IDs
VideoCapture cap1(/*camera Ip Address*/);

另请查看此答案VideoCapture and GigE camera 。据说,当有多个摄像头时,传递IP地址会更好。

要检查的另一件事是,您是否可以在设备管理器中看到两个摄像头。

修改

嘿,我找到了关于使用Pylon SDK( from camera vendor) andOpenCV的很好的文档(它可能是旧版本的OpenCV,但仍然有用)