Emgu CV无法播放视频

时间:2015-03-15 09:06:47

标签: c# opencv video emgucv

我无法使用Emgu 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 bin中没有opencv_ffmpeg.dll。所以我安装opencv-2.4.11并从OpenCV bin复制所有dll以粘贴到我的项目中的Debug中。我也将184.avi粘贴到Debug。但是当我运行它时会显示错误。如何使用Emgu CV播放视频?

2 个答案:

答案 0 :(得分:0)

您的代码运行正常。我认为问题是您没有将视频文件导入Visual Studio。因此,尝试将视频文件导入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();
        }
    }
}

答案 1 :(得分:0)

您只需提供完整路径而不仅仅是文件名。

您没有与程序exe相同的文件夹中的视频文件。 如果您将视频文件放在程序exe旁边,它也应该可以工作。