我是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;
}
}
}
答案 0 :(得分: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
答案 1 :(得分:0)
致电QueryFrame()
两次,它对我有用:
if (capture == null)
capture = new Capture();
capture.QueryFrame();
Image<Bgr,Byte> img=capture.QueryFrame().ToImage<Bgr, Byte>();
imageBox1.Image = img.Bitmap;
答案 2 :(得分:0)
就我而言,卡巴斯基反病毒软件阻止了对我的网络摄像头的访问。更改了一些安全设置后,我得以使emgu捕获恢复工作。