【C# -- OpenCV】Emgu CV 第一个实例

原文 【C# -- OpenCV】Emgu CV 第一个实例

Emgu CV下载地址

http://sourceforge.net/projects/emgucv/files/

找最新的下就行了,傻瓜式安装,选择目录后自动完成安装,然后提示安装VS2008和VS2010的插件,我使用的是VS2010,然后完成操作。

 

Emgu CV是什么?

Emgu CV是.NET平台下对OpenCV图像处理库的封装,也就是.NET版。可以运行在C#、VB、VC++等。

安装完成后需要设置环境变量,比如我安装在E:/Emgu/emgucv-windows-x86 2.2.1.1150,然后再系统环境变量添加E:/Emgu/emgucv-windows-x86 2.2.1.1150/bin即可

 

编写第一个小程序

在VS2010中新建一个Windows应用程序

首先需要导入UI插件

在浏览中定位到Emgu的安装目录bin下,选择Emgu.CV.UI.dll

在引用中添加dll调用,分别是Emgu.CV.dll和Emgu.CV.ML.dll和Emgu.CV.UI.dll和Emgu.Util.dll以及ZedGraph.dll

添加完毕后放置一个Button控件和一个imagebox控件(第三张图中导入的自定义插件),然后编写代码即可

 

代码

[csharp] view plaincopyprint?

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using Emgu.CV;//PS:调用的Emgu dll  
  10. using Emgu.CV.Structure;  
  11. using Emgu.Util;  
  12. using System.Threading;  
  13.   
  14. namespace Emgu1  
  15. {  
  16.     public partial class Form1 : Form  
  17.     {  
  18.         public Form1()  
  19.         {  
  20.             InitializeComponent();  
  21.         }  
  22.         private Capture capture;  
  23.         private bool captureinprocess;//判断摄像头的状态  
  24.   
  25.         private void button1_Click(object sender, EventArgs e)  
  26.         {  
  27.             if (capture != null)//摄像头不为空  
  28.             {  
  29.                 if (captureinprocess)  
  30.                 {  
  31.                     Application.Idle -= new EventHandler(processfram);  
  32.                     button1.Text = "Stop!";  
  33.                 }  
  34.                 else  
  35.                 {  
  36.                     Application.Idle += new EventHandler(processfram);  
  37.                     button1.Text = "Start!";  
  38.                 }  
  39.                 captureinprocess = !captureinprocess;  
  40.             }  
  41.             else//摄像头为空则通过Capture()方法调用  
  42.             {  
  43.                 try  
  44.                 {  
  45.                     capture = new Capture();  
  46.                 }  
  47.                 catch (NullReferenceException excpt)  
  48.                 {  
  49.                     MessageBox.Show(excpt.Message);  
  50.                 }  
  51.             }  
  52.         }  
  53.   
  54.         private void processfram(object sender, EventArgs arg)  
  55.         {  
  56.             Image<Bgr, Byte> frame = capture.QueryFrame();  
  57.             imageBox1.Image = frame;  
  58.         }  
  59.     }  
  60. }  

 

总结

我刚开始研究Emgu CV,有很多很多不懂的地方,以上步骤我基本是按照网上教程一步一步做的(http://www.dotblogs.com.tw/chou/archive/2009/06/13/8812.aspx

没有任何问题,CV中提供了众多的借口方便调用,非常适合需要图像处理而不精通算法的人,这里面非常值得研究。

 

全文参考:http://blog.csdn.net/gaaranaruto/article/details/6328358#

时间: 2024-09-14 06:06:30

【C# -- OpenCV】Emgu CV 第一个实例的相关文章

C# 中使用OPenCV(Emgu)心得

原文:C# 中使用OPenCV(Emgu)心得 首先介绍一下自己的情况,2010年的3月份开始接触学习C#编程,之前C#和OpenCV都是零基础,由于全都是自学进度比较慢,中间也走了不少弯路.进过三个月自己的学习与探索,对C#中使用OpenCV也算是有点心得,希望对初学者有所帮助,也希望大牛们进行指点.我使用的编程环境是VS2005,使用的Emgucv 2.1.0.793版本. 1.先是在程序中图像的导入,我是根据图像路径实现,其中path是string类型,是图像路径. IntPtr img=

&amp;amp;quot;Emgu.CV.CvInvoke”的类型初始值设定项引发异常--解决办法

问题描述 网上搜到的解决方法如下(对我没有帮助):第一步,首先引入包,引入所有Emgu开头的包(如Emgu.CV.Emgu.CV.UI.Emgu.CV.ML.Emgu.CV.GPU.Emgu.Util.Emgu.CV.DebuggerVisualizers.VS2010等)第二步,打开项目目录下的binDebug文件夹,然后把Emgu的bin目录下(例如我的安路径D:Emguemgucv-windows-x862.2.1.1150bin)的所有的dll文件复制到项目目录下的binDebug文件夹

Emgu.cv.cvinvoke的类型初始值设定引发异常

问题描述 我自己的电脑是32位的,安装了emgu和opencv,程序在我自己的电脑上是可以运行的,但是换了另外一台64位的电脑程序会出现"Emgu.cv.cvinvoke的类型初始值设定引发异常"的问题,64位的电脑上没有安装emgu和opencv.我也按照网上说的把bin目录下的dll文件都放进debug文件夹里面,但是还是没有用.请教一下各位大神!谢谢! 解决方案

php-Smarty第一个实例总是无法display

问题描述 Smarty第一个实例总是无法display 以上为目录结构,libs为Smarty的目录,tpls为模板目录,test.tpl在该目录下, coms为编译目录,经过多次试验,都是只能输出display的echo,结果为000033334444,为什么display无法正常执行?

只运行一个实例且试图运行第二个实例时自动激活第一个实例

本文配套源码 很多程序象winamp,TTplayer,RealPlayer等都有自动激活前一个实例的功能,其实这玩意也很简单的 ,在VB中可以用App.hInstance 来判断是否运行了程序的一个实例,用API函数FindWindow来找到前一个 实例的句柄,从而为激活她做好了准备.但是App.hInstance 有很大的局限性,一个不需要其他资源支 持的EXE文件,如果你复制到其他目录,这个复制品就可以畅通无阻的运行而不管他的前辈是否已运行, 如果这个程序需要独占某个硬件或其他资源,这样就

【OpenCV归纳】3 在实例中学习简单函数以及数据读写

 实例一 int main() {  IplImage*  img = cvLoadImage("6085.jpg", 1);  IplImage* red = cvCreateImage(cvGetSize(img), img->depth, 1);  IplImage* green = cvCreateImage(cvGetSize(img), img->depth, 1);  IplImage* blue = cvCreateImage(cvGetSize(img

OpenCV入门:简单图像处理实例——平滑滤波

本文简单举一个图像平滑滤波的例子,以此认识OpenCV为我们提供的强大图像处理功能.代码如下: // // main.cpp // Smooth_Filter // // Created by 黄露 on 16/3/21. // Copyright 2016年 huanglu_thu13. All rights reserved. // #include "cv.h" #include "highgui.h" int main(int argc, const cha

TFS二次开发的第一个实例

首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和 TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类.他们的区别如下: 基本上我们可以通过上面两个类对TFS操作所有功能点.下面我们先看看如何使用 TfsTeamProjectCollection获取特定团队集合下的所有项目,并且打印出项目名称. //取出团队集 合URI下的项目名称,如果团队集合为空则取默认集合下项目 //Uri tf

php 获取文章内容的第一张图片实例

首先看一个函数:  代码如下 复制代码 function getpic($str_img){     preg_match_all("/<img.*>/isU",$str,$ereg);//正则表达式把图片的整个都获取出来了     $img=$ereg[0][0];//图片     $p="#src=('|")(.*)('|")#isU";//正则表达式     preg_match_all ($p, $img, $img1);