文档章节

基于Emgu CV的图像处理 第一章 环境配置

Hoyho
 Hoyho
发布于 2016/06/13 11:41
字数 591
阅读 261
收藏 4

    自英特尔公司发行OpenCV,由于它采用了BSD许可授权,因此无论是在商业和个人或者学术研究等领域都得到了广泛的应用,OpenCV全称是开源计算机视觉库(Open Source Computer Vision Library),但在.NET平台上经过重新封装发布并主要用于C# 、VB等语言的开源库,又称为Emgu CV,其在本质来讲都是同一个东西,因此下文出现的OpenCV 与Emgu CV 均指同一个类库。

Emgu CV的图像处理包含:

1.  图像变换

2.  图像增强和复原

3.  图像编码压缩

4.  图像分割

5.  图像分析和理解

 

Emgu CV系统框架结构

 

 

使用emgucv 进行开发是很简单事情,首先我们需要安装Emgucv ,可以从sourceforge找到最新版的下载地址:

https://sourceforge.net/projects/emgucv/

我用过几个版本,其中3.0改版有些旧的方法已经不再提供,所以不方便换成2.4.10,但是发现存在一个bug,不能使用haar训练,于是再降级到2.4.0,暂时没发现问题

为了更方便后续使用,建议添加到系统路径

如下:右键我的电脑,属性

 

编辑path

 

配置完成后写个简单的demo检查是否有问题

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;

namespace CameraCapture
{
   public partial class CameraCapture : Form
   {
      private Capture _capture = null;
      private bool _captureInProgress;

      public CameraCapture()
      {
         InitializeComponent();
         try
         {
            _capture = new Capture(0); //第0个摄像头,可以是外接USB摄像头
            _capture.ImageGrabbed += ProcessFrame; //获取到一帧图像后触发
         }
         catch (NullReferenceException excpt)
         {
            MessageBox.Show(excpt.Message);
         }
      }

      private void ProcessFrame(object sender, EventArgs arg)
      {
         Image<Bgr, Byte> frame = _capture.RetrieveBgrFrame();

         Image<Gray, Byte> grayFrame = frame.Convert<Gray, Byte>();//灰度图
         Image<Gray, Byte> smallGrayFrame = grayFrame.PyrDown();
         Image<Gray, Byte> smoothedGrayFrame = smallGrayFrame.PyrUp();//平滑滤波
         Image<Gray, Byte> cannyFrame = smoothedGrayFrame.Canny(new Gray(100), new Gray(60));//边缘检测

         captureImageBox.Image = frame;
         grayscaleImageBox.Image = grayFrame;
         smoothedGrayscaleImageBox.Image = smoothedGrayFrame;
         cannyImageBox.Image = cannyFrame;
      }

      private void captureButtonClick(object sender, EventArgs e)
      {
         if (_capture != null)
         {
            if (_captureInProgress)
            {  //stop the capture
               captureButton.Text = "Start Capture";
               _capture.Pause();
            }
            else
            {
               //start the capture
               captureButton.Text = "Stop";
               _capture.Start();
            }

            _captureInProgress = !_captureInProgress;
         }
      }

      private void ReleaseData()
      {
         if (_capture != null)
            _capture.Dispose();
      }

      private void FlipHorizontalButtonClick(object sender, EventArgs e)
      {
         if (_capture != null) _capture.FlipHorizontal = !_capture.FlipHorizontal;
      }

      private void FlipVerticalButtonClick(object sender, EventArgs e)
      {
         if (_capture != null) _capture.FlipVertical = !_capture.FlipVertical;
      }
   }
}

能正常运行说明配置没问题

注:如果无法运行可能需要将安装目录下bin下的dll复制到本工程的debug目录

© 著作权归作者所有

Hoyho
粉丝 0
博文 7
码字总数 5068
作品 0
广州
程序员
私信 提问
C# 利用 OpenCV 进行视频捕获

简介 这个项目是关于如何从网络摄像头或者视频文件(*.AVI)中捕获视频的,这个项目是用C#和OPENCV编写的。 这将有助于那些喜欢C#和OpenCV环境的人。这个程序完全基于Visual Studio 2010 ve...

oschina
2014/02/09
16.7K
1
OpenCV3.4 0xc00007b问题解决

此问题是相关的dll放置system32或SysWOW64有问题 先删除system32,SysWOW64目录下的 ucrtbased.dll,msvcp120d.dll, 直到提示缺少相关的dll文件 然后放置32版本到system32,如果还是提示0xc0000...

xfan1503
2018/09/29
0
0
OpenCV(EmguCV)2.1新特性介绍之图像分割GrabCut

作者:王先荣 前不久OpenCV和EmguCV相继发布了2.1版,增加了一些新的特性,本文关注的是其中的图像分割部分——GrabCut。GrabCut主要用于图像编辑中的抠图,作用跟Photoshop中的魔法棒、套索...

鉴客
2012/01/13
4.8K
0
[转载]转载,opencv轮廓查找,匹配以及特征提取,实例

已有 9450 次阅读 2012-3-15 20:50 |系统分类:科研笔记|关键词:opencv 轮廓 轮廓的查找、表达、绘制、特性及匹配(How to Use Contour? Find, Component, Construct, Features & Match) 作者:...

andyhe91
2014/12/19
0
0
Mr'hu/ImageRecognition

ImageRecognition 基于OpenCV实现的图片识别功能。该项目是参考OpenCV 和 EmguCV一些例子进行学习的项目。 环境安装 OpenCV:https://sourceforge.net/projects/opencvlibrary/ EmguCV:htt...

Mr'hu
2017/12/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?

轻松筹首创了“大病救助”模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题。而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数...

阿里云云栖社区
5分钟前
1
0
Confluence 6 在升级过程中查看合并日志

为了监控升级的过程,你应该查看 application log 日志中的输出。 通常日志经常将会显示多个日志实例,这个实例是定义在日志的 INFO 级别的,通常格式如下: WikiToXhtmlMigrationThread-n -...

honeymoose
6分钟前
0
0
git diff 文件对比

git diff filepath 工作区与暂存区比较 git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较 git diff --staged 或 --cached filepath 暂存区与HEAD比较 git diff branchName filepa......

李佳顺
6分钟前
0
0
spring mvc 定制化配置

spring mvc 自定义配置 1.实现某些接口,然后让上面的类加载进去. class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean......

最爱肉肉
8分钟前
0
0
OSG_采样像机的内容如果不显示到窗口上

cameraLight->setRenderTargetImplementation(Camera::FRAME_BUFFER_OBJECT);// 这句使内容不渲染到屏幕上cameraLight->setRenderOrder(Camera::PRE_RENDER); 1.setRenderTargetImplement......

洛克人杰洛
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部