[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010
2014-08-16
最近要进行图像识别,准备利用几天的时间研究一下Emgu CV,花了一晚上功夫进行调试环境安装,期间遇到了不少问题,现梳理一下安装过程和调试过程中出现的问题。
中间有转载别人的部分,有简体和繁体,还掺杂英文,就不整理了,基本都能看懂。
一、环境建立准备
本篇著在於使用Visual C# 2010 Express + EmguCV環境的建置。
環境:
Visual C# 2010 Express 下載點:
http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express
EmguCV 下載點:
文件名是2.9版本,但个人感觉是2.4.9版本。
libemgucv-windows-universal-cuda-2.9.0.1922-beta.exe (214.0 MB)
2.4.0版本下载地址
thunder://QUFodHRwOi8vaXdlYi5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9lbWd1Y3YvZW1ndWN2LzIuNC4wL2xpYmVtZ3Vjdi13aW5kb3dzLXg4Ni0yLjQuMC4xNzE3LmV4ZVpa/
截至2014年8月16日,emgucv的版本为2.9.0.1922-beta。2.4.2及之前版本,若安装文件文件名中带gpu字样的,则仅限支持CUDA的显卡使用;不带gpu字样的,则通用。而通用版目前的最高版本为2.4.0。
OpenCV下載點:
截至2014年8月16日,OpenCV的稳定版本为opencv-2.4.9.exe (365.7 MB)
鉴于目前调试功能不是很复杂,根据部分网友反馈和调试经验,即使不安装opencv,emgucv也能正常运行。但据反馈,如果两个版本不匹配,会出现错误,如果要装opencv,最好保证两个软件版本一致。
二、安装调试环境
opencv安装
为了便于管理,我在C盘根目录下新建了文件夹,然后解压至下面。
EmguCV:
过程类似。我安装在C盘下面,以便统一管理。
三、参数配置(转载)
转载部分是以2.3.0版为基础,但和2.4.0配置方式一样,供参考。
Emgucv完整路徑是C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin
OpenCV完整路徑是C:\opencv\opencv\build\x86\vc10\bin
因此要將這兩個路徑加進Windows環境變數裡。实际只添加了opencv环境变量。

環境變數的設定方法與設定Java的方法一樣,將
C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin;C:\opencv\opencv\build\x86\vc10\bin;
填入Variable value欄位內的最前面。要注意到路徑中間及最後面需要加上“;”,如果漏加了,评论就是一长串的问题,然后我也不知道你的问题在哪里。
到目前已經算是把軟體都安裝好,也設定完成了。
四、调试环境配置
將Emgu.CV.UI.dll加入工具箱內
工具>選擇工具箱項目>.NetFrameworkm元件頁籤點內選瀏覽>




Emgu.CV.UI.dll的路徑在C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin
加入工具箱以後,我們可以確認一下有沒有成功加入成功。

若成功加入工具箱則會在工具箱內自動新增四個元件
最後在加入開發程式時所需的dll函式庫,就可以開始编程。


包括Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等文件。
相關的dll檔一樣在C:\Emgu\emgucv-windows-x86 2.3.0.1416\bin底下

至於需要加那些dll,則看需求。
到目前為止,從環境的建置一直到建立專案完整的步驟都如上面所述。
五、调试测试
是否能正常运行,用下面的例子可以测试一下,如果正常,可以弹出窗口显示一张图片。
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 Emgu.CV;
using Emgu.Util; namespace EmguDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
CvInvoke.cvNamedWindow("Hello");
IntPtr img = CvInvoke.cvLoadImage("C:\\1.jpg", Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR);
CvInvoke.cvShowImage("Hello", img);
CvInvoke.cvWaitKey();
CvInvoke.cvReleaseImage(ref img);
CvInvoke.cvDestroyWindow("Hello");
}
}
}
注意更改图片的绝对路径。这种错误不要再犯。
六、错误处理
大部分遇到的问题都是一样,“cvinvoke”异常。
Have you installed MSVCRT?
- For Version 2.4+, the bundled OpenCV binary is build with Visual Studio 2010, you will needs to installed MSVCRT 10.0 SP1 x86 or MSVCRT 10.0 SP1 x64 to resolve the dependency issue.
是否安装了Microsoft Visual C++ 2010 SP1可再发行组件包x86,现在基本都带了,这个不是问题。
Have you copied the OpenCV dlls to the execution directory?
Make sure the unmanaged DLLs ar
e in the execution directory.
- For EMGU CV version 2.4
cudart64_42_9.dll, cvextern.dll, npp64_42_9.dll, opencv_calib3dXXX.dll, opencv_contribXXX.dll, opencv_coreXXX.dll, opencv_features2dXXX.dll, opencv_flannXXX.dll, opencv_highguiXXX.dll, opencv_imgprocXXX.dll, opencv_legacyXXX.dll, opencv_mlXXX.dll, opencv_nonfreXXX.dll, opencv_objectdetectXXX.dll, opencv_videoXXX.dll,whereXXXis the OpenCV version number.
- For Emgu CV version >=2.4.2, this means the "x86" and "x64" folder and all the dlls within the folders. The folder names and file structures should not be altered when deploying with the application.
确认unmanaged DLLs 是否已经拷贝到程序文件夹。o(╯□╰)o 天生的缺陷。
- cudart64_32_16.dll
- cufft64_32_16.dll
- cvextern.dll
- npp64_32_16.dll
- opencv_calib3d220.dll
- opencv_contrib220.dll
- opencv_core220.dll
- opencv_features2d220.dll
- opencv_flann220.dll
- opencv_gpu220.dll
- opencv_highgui220.dll
- opencv_imgproc220.dll
- opencv_legacy220.dll
- opencv_ml220.dll
- opencv_objdetect220.dll
- opencv_video220.dll
具体dll文件列表可参考上述名称。
这步很重要,把相关dll拷贝过去就OK了。
The best way to set up your project is:
- Copy the unmanaged DLLs to your project folder
- Right click on the project, click Add->Existing Item and select all unmanaged DLLs. Add them to the project.
- For each of the included Dlls, left click on it, find the "Copy to Output Directory" option and select "Copy if newer"
[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010的更多相关文章
- [转载+原创]Emgu CV on C# (三) —— Emgu CV on 均衡化
本文简要描述了均衡化原理及数学实现等理论问题,最终利用emgucv实现图像的灰度均衡. 直方图的均衡化,这是图像增强的常用方法. 一.均衡化原理及数学实现(转载) 均衡化原理及数学实现可重点参看——& ...
- [转载+原创]Emgu CV on C# (二) —— Emgu CV on 灰度化
本文主要对彩色图片灰度化的方法及其实现过程进行总结,最终给出Emgu CV实现的代码. 一.灰度化原理及数学实现(转载自——<图像灰度化方法总结及其VC实现> 该篇文章使用opencv实现 ...
- [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化
局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...
- Microsoft Visual Studio 2010 遇到了异常,可能是由某个扩展导致的。 转载
问题: 今天打开好久没用的Microsoft Visual Studio 2010 ,刚才创建了一个C++工程,错误就出现了. 只要在VS2010源码编辑器中输入一个字符,它就报错 ":Mi ...
- 【opencv】cv::Mat转std::vector<cv::Point2d> (注意两容器中数据类型的一致性)
获取cv::Mat大小: mymat.size() 获取cv::Mat指定位置的值:需指定数据类型,且注意数据类型应与存入时的数据类型一致,否则会导致不抛出异常的数据错误 mymat.at<,i ...
- [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化
重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数) 1.概述 图像二值化是图像处理中的一项基本技术,也 ...
- [转载+原创]Emgu CV on C# (七) —— Emgu CV on 轮廓检测
轮廓检测 对于查找轮廓我们一般要对图像Canny检测.但是对于很特殊的场合其实我们还可以直接对二值化的图像进行轮廓的提取. 关键函数 1. cvFindContours Retrieves conto ...
- [转载+原创]Emgu CV on C# (六) —— Emgu CV on Canny边缘检测
Canny边缘检测也是一种边缘检测方法,本文介绍了Canny边缘检测的函数及其使用方法,并利用emgucv方法将轮廓检测解算的结果与原文进行比较. 图像的边缘检测的原理是检测出图像中所有灰度值变化较大 ...
- Linux安装mysql(Redhat6.5+MySQL5.7)(转载+原创补漏)
一.下载 这里我创建了一目录software用于存放我们待会要下载的mysql包,先去到该目录 命令:cd /software命令:wget http://mirrors.sohu.com/mysql ...
随机推荐
- 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用
首先是OC调用C++的代码. 创建一个Objective-C的项目,并创建c++文件MyCppFile.hpp和MyCppFile.cpp. 把要调用Cpp代码的文件名改成mm后缀名,项目代码 ...
- ios开发:Core Data概述
Core Data 概述 2005年的四月份,Apple 发布了 OS X 10.4,在这个版本中 Core Data 框架发布了.Core Data本身既不是数据库也不是数据库访问框架.相反,Cor ...
- UI4_UIToolBar
// // AppDelegate.m // UI4_UIToolBar // // Created by zhangxueming on 15/7/6. // Copyright (c) 2015年 ...
- 移动web开发的一些坑
类似的题目一搜一大堆,我就不再写那些meta标签类似的内容了,记录一下自己实现中遇到的问题,如果能帮到你,那再好不过了. 1px border的问题,大家能搜到很多方案,但如何选择还是要根据实际情况, ...
- VS2010恢复默认编辑环境的设置
VS2010恢复默认编辑环境的设置 VS2010在安装完成后初次打开的时候可以设置自己常用的环境为默认打开的编辑环境, 也可以在打开IDE以后通过如下步骤设置默认环境: Tools->Impor ...
- MySQL事务机制
事务机制的特性通常被概括为"ACID原则" A(Atomic) 原子性: 构成一个事务的所有语句应该是一个独立的逻辑单元,要么全部执行成功, 要么一个都不成功, 你不能只执行他们当 ...
- iframe整理学习笔记
朋友问了一个比较怪的问题,iframe下自适应的问题,因为很少使用iframe的原因,怀着对iframe的疑惑采用了一点点实践;以下frame表示针对的iframe元素 解决的方法:对iframe进行 ...
- Linux5.8下安装PhpMyadmin无法关联php-mcrypt问题
一.yum安装php-mcrypt ##发现没办法安装 原来CentOS 官方默认不在对mcrypt模块 进行支持,所以必须另想办法折腾了2个小时总算搞定,这里主要使用了Fedora的扩展库, E ...
- 解析php时间戳与日期的转换
php中时间戳与日期的转换. 实现功能:获取某个日期的时间戳,或获取某个时间的PHP时间戳. strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date( ...
- MIT Scheme 的基本使用
MIT Scheme 的基本使用 安装和启动 启动 在 Windows 下正确安装 MIT Scheme 系统后,程序菜单里将有一个 MIT Scheme 目录,其中包含: Documentation ...