1

我是 emgu cv 的新手,对于一个大型项目,我试图从网络摄像头捕获图像并将其显示在图像框中,但它显示的是黑色图像。

以下代码有什么问题?

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;                 
        }
    }
}
4

3 回答 3

0

我认为有一个小错误。

改用这个:

声明为全局变量:

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

于 2012-03-24T18:09:41.683 回答
0

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

于 2019-01-23T08:03:57.670 回答
0

打电话QueryFrame()两次,它对我有用:

 if (capture == null)
           capture = new Capture();
 capture.QueryFrame();
 Image<Bgr,Byte> img=capture.QueryFrame().ToImage<Bgr, Byte>();
 imageBox1.Image = img.Bitmap;
于 2016-09-28T10:27:24.627 回答