2015-03-15 7 views
1

Я не могу играть в игры видео с Emgu CVEmgu CV не может воспроизводить видео

показать ошибку Это

Невозможно создать захват из 184.avi

Здесь есть код:

public partial class Form1 : Form 
{ 
    //Set the name of pop-up window 
    String winname = "First Window"; 
    Timer My_Time = new Timer(); 
    int FPS=30; 
    Capture _capture; 

    public Form1() 
    { 
     InitializeComponent(); 

    //Frame Rate 
    My_Timer.Interval = 1000/FPS; 
    My_Timer.Tick += new EventHandler(My_Timer_Tick); 
    My_Timer.Start(); 

    _capture = new Capture("184.avi"); // Error this line 

    } 

    private void My_Timer_Tick(object sender, EventArgs e) 
    { 
     imageBox.Image = _capture.QueryFrame().ToBitmap(); 
    } 

Я использую Windows 8 x64 и установить emgucv-windows-universal-cuda 2.4.10.1940 Это не имеет opencv_ffmpeg.dll в корзине. Поэтому я устанавливаю opencv-2.4.11 и копирую все dll из bin в OpenCV, чтобы вставить Debug в свой проект. Я вставляю 184.avi в Debug тоже. Но когда я запускаю его, показывайте ошибку, как это. Как играть в видео с Emgu CV?

+0

Надеюсь, это поможет. http://www.codeproject.com/Articles/722569/Video-Capture-using-OpenCV-with-Csharp –

ответ

0

Ваш код работает нормально. Я думаю, проблема в том, что вы не импортировали видеофайл в Visual Studio. Поэтому попробуйте импортировать видеофайл в визуальную студию, а также всегда копировать свойства. Ниже вы можете увидеть, что я импортировал файл A.avi и всегда задавал его свойства для копирования.

enter image description here

И думаю, что вы можете просто использовать imageBox.Image = _capture.QueryFrame(); вместо imageBox.Image = _capture.QueryFrame().ToBitmap();, потому что вам не нужно преобразовать в растровый с Imagebox.

Код, который я использовал, такой же, как ваш.

using System; 
using System.Diagnostics; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

using Emgu.CV; 
using Emgu.CV.CvEnum; 
using Emgu.CV.Structure; 
using Emgu.CV.UI; 
using Emgu.CV.Features2D; 
using Emgu.CV.Util; 

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    {//Set the name of pop-up window 
     String winname = "First Window"; 
     Timer My_Time = new Timer(); 
     int FPS = 30; 
     Capture _capture; 

     public Form1() 
     { 
      InitializeComponent(); 

      //Frame Rate 
      My_Time.Interval = 1000/FPS; 
      My_Time.Tick += new EventHandler(My_Timer_Tick); 
      My_Time.Start(); 

      _capture = new Capture("A.avi"); // Error this line 

     } 

     private void My_Timer_Tick(object sender, EventArgs e) 
     { 
      imageBox.Image = _capture.QueryFrame(); 
     } 
    } 
} 
+0

Я пробую все, но у меня все еще есть ошибка NullReferenceException был необработанным ** Невозможно создать захват из 184.avi ** Я не знаю, как решить эту проблему. – user572575

+0

Для меня это сначала дало ту же ошибку, и она была исправлена ​​после импорта видеофайла в визуальную студию. Попробуйте проверить конфигурацию Emgu Cv с помощью Visual Studio. https://notebookbft.wordpress.com/2015/03/08/setting-up-emgu-cv-project-with-visual-studio/ –

0

Вы можете просто указать полный путь вместо имени файла.

У вас нет видеофайла в той же папке, что и ваша программа exe. Если вы поместите видеофайл рядом с вашей программой exe, он также должен работать.

Смежные вопросы