【问题标题】:I can't open 2 gige(basler) cameras at the same time with opencv我无法使用 opencv 同时打开 2 个 gige(basler) 相机
【发布时间】:2018-01-24 15:20:58
【问题描述】:

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

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, 我可以打开相机,但窗口中的图像是灰色的。

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

【问题讨论】:

  • 你为什么使用cap(0)cap(2)而不是cap(0)cap(1)?你可以单独打开每个相机吗?如果以相反的顺序打开这两个会发生什么?
  • 我可以单独打开每个相机,如果我颠倒顺序,cap(0)可以打开并获取框架。我也尝试了不同的ID cap(1)到cap(10),仍然有一个camera(cap(0)) 可以工作。

标签: c++ opencv camera


【解决方案1】:

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

另一个可能的情况是您传递了错误的设备 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 的旧版本,但仍然有用)

【讨论】:

  • 感谢您的解决方案。我试图指定摄像机的 IP 就像:'VideoCapture cap;VideoCapture cap1;cap.open("htt p://172.20.12.163");cap1.open("htt p://172.20.12.51");'但它不起作用,并显示“打开文件时出错”,我知道地址有问题,但我找不到相机的正确 IP 或 URL 格式。不同的ID也不起作用。我也无法在设备管理器中看到摄像头,但它们可以在 PYLON VIEWER 中工作。
  • 您是否尝试过通过 Pylon SDK 获取视频?这是一些说明baslerweb.com/fp-1508418766/media/downloads/documents/…
  • 这条指令只告诉我如何构建 Basler pylon c++ 应用程序,我可以运行一些 SDK,例如使用 opencv3 使用单摄像头抓取图像,但仍然无法使用 Grab_MultipleCameras.cpp 打开 2 个摄像头.
猜你喜欢
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多