Ваш код выглядит сомнительным, взгляните на пример Cameracapture, поставляемый с EMGU. Сейчас я не знаю, откуда вы получаете CaptureType.ANY , но ваш код должен быть
Capture capture = new Capture();
viewer.Image = capture.QueryFrame();
.ссылка действительна и устарела (2009).
Вот слегка отредактированный код из примера, который вам понадобится:
private Capture _capture;
public YOUR_PROJECT()
{
InitializeComponent();
try
{
_capture = new Capture();
}
catch (NullReferenceException excpt)
{
MessageBox.Show(excpt.Message);
}
if (_capture != null)
{
Application.Idle += ProcessFrame;
}
}
private void ProcessFrame(object sender, EventArgs arg)
{
Image<Bgr, Byte> frame = _capture.QueryFrame();
Picturebox1.Image = frame.ToBitmap(); //Display image in standard Picture Box
}
Вам нужно только добавить переменную в Capture capture = new Capture () вызов метода, если у вас более одной камеры или если вы читаете из видеофайла
//For example if I had two video Cameras
Capture capture = new Capture(0); //CAM1
Capture capture = new Capture(1); //CAM2
//For a Video File
Capture capture = new Capture(@"C:/..../Myvideofile.avi");
Надеюсь, это поможет вамЕсли нет, попробуйте использовать USB-камеру, чтобы убедиться, что EMGU (OpenCV) не может получить доступ к устройству.
Приветствия,
Крис