Emgu CV C#捕获方法RetrieveBgrFrame使用4个摄像头返回null

时间:2015-05-09 00:41:59

标签: c# opencv camera emgucv

我尝试使用Emgu CV框架显示来自4个摄像头的视频。只有前2个摄像头正确显示,对于另外2个摄像头,RetrieveBgrFrame(Capture对象)的方法总是返回null。

我尝试在USB集线器中交换摄像头的插入顺序,始终只有DirectShow获取的列表中的前两个摄像头正在工作)。为了确保所有相机正常工作,我使用了其他商业程序进行检查,所有相机都正常工作。

有没有人体验过这个?你知道原因是什么吗?

非常感谢任何帮助或指向帮助的人。

请帮忙!

谢谢,

TC

======== code ==========

// ---------------创建相机对象---------------------------

DsDevice[] _SystemCamereas = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); ///// after this statement, _SystemCamereas contains 4 entries

            //Capture capture;
            Capture capture;
            capture = new Capture(2); ///// if I use '0' or '1', i.e. the ids of the first 2 cameras, picture box displayed correctly
            capture.ImageGrabbed += ProcessFrame;
            _captureImageBoxDict.Add(capture, imageBox1);
            imageBox1.SizeMode = PictureBoxSizeMode.StretchImage;

// ---------- Grab后处理帧的回调方法

    private void ProcessFrame(object sender, EventArgs arg)
    {
        Capture capture = (Capture)sender;
        Image<Bgr, Byte> frame = capture.RetrieveBgrFrame(); // for camera id = 0 or 1, frame is not null and everythins goes smoothly, for id = 2 or 3, frame is null!!!!

        if (frame == null)
        {
            return;
        }
        // ......
     }

==========其他系统信息====================

Microsoft Visual Studio Community 2013

Emgu CV版本:2.4.10.1939(通过Visual Studio NuGet Manager获取)

.NET Framework 4.5

操作系统:Windows 7专业版

处理器:Intel Core i7 CPU Q 720 @ 1.60GHz

已安装的内存(RAM):16.0 GB

0 个答案:

没有答案