1. 程式人生 > >c#_使用emgu3.0操作本地攝像頭

c#_使用emgu3.0操作本地攝像頭

轉載於

https://blog.csdn.net/pengjian444/article/details/50647471

c#_使用emgucv 3.0 操作本地攝像頭

首先我們要下載emgu3.0,安裝包,[下載地址]http://www.emgu.com/wiki/index.php/Download_And_Installation

安裝完成以後,根據你要所開發的應用的平臺,在安裝目錄的bin目錄下選擇x86或者x64 複製裡面的四個dll檔案 : cvextern.dll + msvcp120.dll + msvcr120.dll + opencv_ffmpeg310_64.dll / opencv_ffmpeg310.dll 到應用的開發目錄的bin/debug目錄下,此外將安裝目錄bin目錄下的所有dll檔案新增引用,包括 : cvextern.dll + Emgu.CV.Contrib.dll + Emgu.CV.Cuda.dll + Emgu.CV.dll + Emgu.CV.ML.dll + Emgu.CV.OCR.dll + Emgu.CV.Shape.dll + Emgu.CV.Stitching.dll + Emgu.CV.Superres.dll + Emgu.CV.UI.dll + Emgu.CV.UI.GL.dll + Emgu.CV.VideoStab.dll + Emgu.Util.dll + msvcp120.dll + msvc120.dll+ opencv_ffmpeg300_64.dll;最好是把上面的所有檔案都複製到debug目錄下。

在做好上面的準備工作之後,我們還要進行一個操作。新增imagebox控制元件,這個控制元件是在Emgu.CV.UI.dll檔案中的,.net平臺並沒有提供。新增控制元件的步驟如下:


開啟工具箱面板,右鍵單擊工具箱空白區域,選擇新增選項卡並命名為emgu.ui。

找到Emgu.CV.UI.dll 檔案 將其拖入我們剛新建的選項卡中,這個時候我們的選項卡里就會多出幾個控制元件,

進入設計檢視,將imagebox 新增到窗體中


官方新增控制元件教程連結(英文):<連結> http://www.emgu.com/wiki/index.php/Add_ImageBox_Control

新增完控制元件,就可以開始寫程式碼了!

using Emgu.CV;

using System;
using System.Windows.Forms;

namespace RecognizeFace
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Capture cap;
        private bool isProcess = false;

        void button1_Click(object sender, EventArgs e)
        {
            if (cap != null)
            {
                if (isProcess)
                {
                    Application.Idle -= new EventHandler(ProcessFram);
                    button1.Text = "stop!";
                }
                else
                {
                    Application.Idle += new EventHandler(ProcessFram);
                    button1.Text = "start!";
                }
                isProcess = !isProcess;
            }
            else
            {
                try
                {
                    cap = new Emgu.CV.Capture();
                }
                catch (NullReferenceException expt)
                {
                    MessageBox.Show(expt.Message);
                }
            }
        }

        private void ProcessFram(object sender, EventArgs arg)
        {
            imageBox1.Image = cap.QueryFrame();
        }
    }
}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

程式碼很簡單,主要是配置問題!程式碼就不細說了。

異常 : 如果在執行的時候出現了異常:“Emgu.CV.CvInvoke”的型別初始值設定項引發異常。” 就我現在知道的,可能是因為沒有將cvextern.dll + msvcp120.dll + msvcr120.dll + opencv_ffmpeg310_64.dll / opencv_ffmpeg310.dll 這四個dll檔案新增到debug目錄下。

---------------------

本文來自 PJZero 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/pengjian444/article/details/50647471?utm_source=copy