C# 用Emgu捕捉图像-黑色图像

C# 用Emgu捕捉图像-黑色图像,c#,emgucv,C#,Emgucv,我是emgu简历的新手,在一个重大项目中,我试图从网络摄像头中捕获一幅图像,并将其显示在图像框中,但它显示的是黑色图像 以下代码有什么问题 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Emgu

我是emgu简历的新手,在一个重大项目中,我试图从网络摄像头中捕获一幅图像,并将其显示在图像框中,但它显示的是黑色图像

以下代码有什么问题

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.UI;
using Emgu.Util;

namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        private Capture capture;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (capture == null)
               capture = new Capture();
            Image<Bgr,Byte> img=capture.QueryFrame();
            imageBox1.Image = img;                 
        }
    }
}
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
使用Emgu.CV;
使用Emgu.CV.Structure;
使用Emgu.CV.UI;
使用Emgu.Util;
命名空间Windows窗体应用程序7
{
公共部分类Form1:Form
{
私人捕获;
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
如果(捕获==null)
捕获=新捕获();
Image img=capture.QueryFrame();
imageBox1.Image=img;
}
}
}

我想有个小错误

改用这个:

声明为全局变量:

Capture capture = default(Capture);
把这个装进去:

capture = new Capture(0);
Control.CheckForIllegalCrossThreadCalls = false;
System.Threading.Thread t = new System.Threading.Thread(grab);

t.Start();
创建一个子抓斗并放入

do {
    ImageBox1.Image = capture.QueryFrame();
} while (true);
干杯
Shreyas

调用
QueryFrame()
两次,它对我有效:

 if (capture == null)
           capture = new Capture();
 capture.QueryFrame();
 Image<Bgr,Byte> img=capture.QueryFrame().ToImage<Bgr, Byte>();
 imageBox1.Image = img.Bitmap;
if(捕获==null)
捕获=新捕获();
capture.QueryFrame();
Image img=capture.QueryFrame().ToImage();
imageBox1.Image=img.Bitmap;

就我而言,卡巴斯基防病毒软件阻止了我对网络摄像头的访问。更改了一些安全设置后,我可以让emgu capture恢复工作。

您应该在网络摄像头上提供更多信息,无论它是否内置笔记本电脑,以及您使用的是哪个emgu版本。然而,我们尝试运行一个Opencv示例,如果它不起作用,则使用网络摄像头。这不是emgu的问题,而是Opencv的问题。您是否尝试过运行emgu附带的一个示例应用程序?比如视频监控样本。