关于EMGU CV的那些事——1.环境搭建(win8 vs2012 emgucv3.0)
http://blog.csdn.net/aptx704610875/article/details/46045689
楼主读研阶段研究图像处理,想用C#实现PTAM/PTAMM算法并用UNITY创建相关应用。对于PTAM(Parallel Tracking and Mapping)算法,使用了大量的第三方库,实现语言是C/C++。之所以选择C#,是因为楼主想要使用Unity将PTAM算法用于AR系统。那么问题来了,C/C++处理图像使用Open CV,C#就只能使用Open CV的兄弟Emgu CV了,Emgu CV对Open CV的函数进行了封装,使其能运行在.net环境中。
首先我们到Emgu CV的官网那个下载最新3.0.0-rc1版本(http://sourceforge.net/projects/emgucv/files/emgucv/),对应封装的是3.0.0-rc1版本的Open CV。注意我们不需要安装Open CV!对于普通版和CUDA版,如果你不涉及显卡编程的话,没区别。如果需用CUDA或OpenCL对显卡编程,则需要下载CUDA版。楼主认为以后的图像处理,极有可能广泛应用显卡编程。
下载完后,安装或解压。(楼主机子为windows 8.1 64位系统,IDE为VS2012 Update4.)开始配置环境变量。在用户变量里新建PATH,里面填上安装或解压后的Emgu目录下的bin和bin里的x86和x64。如下图所示:(32位只需x86,64位需加上x64)
完成后注销或重启。打开VS2012,新建一个C# windows窗体应用程序(注意如果想以后使用unity的话,.net framework应该选3.5一下),打开 工具-选择工具箱项 浏览添加Emgu.CV.UI.dll(在bin目录里),然后右键 解决方案资源管理器里-引用-添加引用-浏览 添加bin目录下的Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll共五个DLL文件即可完成配置。注意每次新建一个工程都需要这一步。
接下来奉上图片读取和灰度处理的代码:(需在头部加上using Emgu.CV; using Emgu.Util;)
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Diagnostics;
- using Emgu.CV;
- using Emgu.Util;
- namespace EMGU_STUDY_1._0
- {
- public partial class Form1 : Form
- {
- Mat img1 = null;
- Mat img2 = null;
- Mat img3 = null;
- Stopwatch sw = new Stopwatch();
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- OpenFileDialog lvse = new OpenFileDialog();
- lvse.Title = "选择图片";
- lvse.InitialDirectory = "";
- lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
- lvse.FilterIndex = 1;
- if (lvse.ShowDialog() == DialogResult.OK)
- {
- textBox1.Text = null;
- sw.Reset();
- sw.Start();
- img1 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.AnyColor);
- imageBox1.Width = img1.Width / 2;
- imageBox1.Height = img1.Height / 2;
- imageBox1.Image = img1;
- sw.Stop();
- textBox1.Text = sw.ElapsedMilliseconds.ToString();
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- if (img1 != null)
- {
- img2 = new Mat(img1.Rows, img1.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
- textBox2.Text = null;
- sw.Reset();
- sw.Start();
- CvInvoke.CvtColor(img1, img2, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
- imageBox2.Width = img2.Width / 2;
- imageBox2.Height = img2.Height / 2;
- imageBox2.Image = img2;
- sw.Stop();
- textBox2.Text = sw.ElapsedMilliseconds.ToString();
- }
- }
- private void button3_Click(object sender, EventArgs e)
- {
- textBox3.Text = null;
- OpenFileDialog lvse = new OpenFileDialog();
- lvse.Title = "选择图片";
- lvse.InitialDirectory = "";
- lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
- lvse.FilterIndex = 1;
- if (lvse.ShowDialog() == DialogResult.OK)
- {
- sw.Reset();
- sw.Start();
- img3 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.Grayscale);
- imageBox3.Width = img3.Width/2;
- imageBox3.Height = img3.Height/2;
- imageBox3.Image = img3;
- sw.Stop();
- textBox3.Text = sw.ElapsedMilliseconds.ToString();
- }
- }
- private void button4_Click(object sender, EventArgs e)
- {
- img1 = null;
- img2 = null;
- img3 = null;
- imageBox1.Image = null;
- imageBox2.Image = null;
- imageBox3.Image = null;
- textBox1.Text = null;
- textBox2.Text = null;
- textBox3.Text = null;
- }
- }
- }
代码里创建里三个imagebox控件。imagebox1显示由button1加载的彩色图片,imagebox2显示imagebox1中彩色图片通过灰度处理后的灰度图片,imagebox3显示由button3加载的灰度图片。button2使用的是灰度处理函数CvInvoke.CvtColor(),将已经加载好的彩色图像转化为灰度图像。button3中直接在加载时就处理为灰度图像。 本程序还使用Stopwatch计时器对三个过程进行了计时,分别显示在对应的textbox里。
(PS: 对于button2里的灰度处理过程,第一次运行的时间长达200ms+,之后每次在3ms左右,楼主估计是第一次从库中检索并加载灰度处理函数的时间,之后都是直接调用,所以3ms为灰度处理过程的时间。)
欢迎大家给出意见,共同学习!
关于EMGU CV的那些事——1.环境搭建(win8 vs2012 emgucv3.0)的更多相关文章
- 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0
目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- 深度学习环境搭建:window10+CUDA10.0+CUDNN+pytorch1.2.0
去年底入手一台联想Y7000P,配置了Nvidia GeForce GTX 1660 Ti GPU,GPU内存6G,但是因为有GPU服务器,所以一直没有在这台笔记本上跑过模型,如今经过一番折腾,终于在 ...
- cocos2dx 环境搭建 win7 +vs2012+ cocos2dx-2.1.4
转自:http://my.eoe.cn/swer03160828/archive/20067.html 1) 如果在win32 下面编写的cocos2dx 的代码其文件 .cpp,.h 的文件,基本上 ...
- cocos2d-x环境搭建(win7+cocos2d-x-3.0)
一.环境需准备的材料: 1.VS2012,下载地址:官网 2.cocos2d-x和cocostudio,下载地址:官网 3.eclispe,我用的是:adt-bundle-windows-x86_64 ...
- node+webpack环境搭建 vue.js 2.0 基础学习笔记
npm install -g vue //全局安装vue npm install -g webpack //全局安装webpack npm install -g vue-cli //全局安装vue-c ...
- Emgu CV的配置以及在VS 2012中进行图像处理的步骤和实例
说明: 1.所使用的Emgu CV是目前的最新版本3.1.0,下载链接为:https://sourceforge.net/projects/emgucv/files/emgucv/3.1.0/(我选的 ...
- Emgu CV 初试
Emgu CV 是.NET平台下对OpenCV图像处理库的封装,也就是.NET版.可以运行在C#.VB.VC++等. 安装完成后需要设置环境变量,比如我安装在D:\Emgu\emgucv-window ...
- Emgu.CV怎么加载Bitmap
EmguCV 在4.0.1版本之后没办法用Bitmap创建Image了. 我给大家说下 EmguCV怎么加载Bitmap 下边是 EmguCV 官方文档写的,意思是从4.0.1以后的版本不能直接Bit ...
随机推荐
- 08-base镜像
base 镜像有两层含义: 不依赖其他镜像,从 scratch 构建. 其他镜像可以之为基础进行扩展. 所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ub ...
- Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) E. Down or Right
从(1,1,n,n)每次只变一个坐标,进行询问. 如果问到对角线有距离限制, 再从(1,1,n/2,n/2)询问到(n/2,n/2,n,n) 记住前半部分贪心忘上走,后本部分贪心往右走 因为最后的路线 ...
- 1.6 JAVA高并发之线程池
一.JAVA高级并发 1.5JDK之后引入高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的,充分利用了现代多处理器和多核心系统的功能以编写大规模并发 ...
- 使用Idea工具创建Maven WebApp项目
(1)New Project,选择模板,配置SDK (2)配置项目名及项目组名 GroupID是项目组织唯一的标识符, 比如我的项目叫test001 那么GroupID应该是 com.lixiaomi ...
- nginx 日志模块
ngx_http_log_module.c 数据结构 typedef struct { void **main_conf; void **srv_conf; void **loc_conf;} ngx ...
- PReLU——Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification
1. 摘要 在 \(ReLU\) 的基础上作者提出了 \(PReLU\),在几乎没有增加额外参数的前提下既可以提升模型的拟合能力,又能减小过拟合风险. 针对 \(ReLU/PReLU\) 的矫正非线性 ...
- 机器学习之决策树(ID3)算法
最近刚把<机器学习实战>中的决策树过了一遍,接下来通过书中的实例,来温习决策树构造算法中的ID3算法. 海洋生物数据: 不浮出水面是否可以生存 是否有脚蹼 属于鱼类 1 是 是 是 2 ...
- 2017年软件工程第八次作业-互评Alpha版本
B.Thunder——爱阅app(测评人:方铭) 一.基于NABCD评论作品,及改进建议 每个小组评论其他小组Alpha发布的作品:1.根据(不限于)NABCD评论作品的选题:2.评论作品对选题的实现 ...
- Android数据储存之SQLiteDatabase 简单增删改查
SQLiteDatabase 使用 SQLiteDatabase提供如下方法来打开一个文件对应的数据库: openDatabase(String path, SQLiteDatabase.Cursor ...
- 团队作业4——第一次项目冲刺(Alpha版本)第一次
一.会议内容 制定任务内容 制作leangoo表格 初步工作 二.各人工作 成员 计划任务 遇见难题 贡献比 塗家瑜(组长) 后端与数据库通讯 无 1 张新磊 表设计 无 1 姚燕彬 测试计划编写 无 ...