[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010

摘要:
Emgucv完整路徑是C:Emguemgucv-windows-x862.3.0.1416inOpenCV完整路徑是C:opencvopencvuildx86vc10in因此要將這兩個路徑加進Windows環境變數裡。環境變數的設定方法與設定Java的方法一樣,將C:Emguemgucv-windows-x862.3.0.1416in;C:opencvopencvuildx86vc10in;填入Variablevalue欄位內的最前面。包括Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等文件。(一)“EmguCV+VS2010C#,cvinvoke异常的解决办法”http://blog.sina.com.cn/s/blog_6233611f01016mpj.html尝试了一下,没通过,但是后来重新看了一下,是我没有严格按照步骤处理,但后来的解决方案,和他的差不多。ForVersion2.4+,thebundledOpenCVbinaryisbuildwithVisualStudio2010,youwillneedstoinstalledMSVCRT10.0SP1x86orMSVCRT10.0SP1x64toresolvethedependencyissue.是否安装了MicrosoftVisualC++2010SP1可再发行组件包x86,现在基本都带了,这个不是问题。

2014-08-16

最近要进行图像识别,准备利用几天的时间研究一下Emgu CV,花了一晚上功夫进行调试环境安装,期间遇到了不少问题,现梳理一下安装过程和调试过程中出现的问题。

中间有转载别人的部分,有简体和繁体,还掺杂英文,就不整理了,基本都能看懂。

一、环境建立准备

本篇著在於使用Visual C# 2010 Express + EmguCV環境的建置。
環境:
[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第1张
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:Emguemgucv-windows-x86 2.3.0.1416in
OpenCV完整路徑是C:opencvopencvuildx86vc10in

因此要將這兩個路徑加進Windows環境變數裡。实际只添加了opencv环境变量。

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第2张

環境變數的設定方法與設定Java的方法一樣,將
C:Emguemgucv-windows-x86 2.3.0.1416in;C:opencvopencvuildx86vc10in;
填入Variable value欄位內的最前面。要注意到路徑中間及最後面需要加上“;”,如果漏加了,评论就是一长串的问题,然后我也不知道你的问题在哪里。

到目前已經算是把軟體都安裝好,也設定完成了。

四、调试环境配置

將Emgu.CV.UI.dll加入工具箱內

工具>選擇工具箱項目>.NetFrameworkm元件頁籤點內選瀏覽>

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第3张

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第4张

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第5张

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第6张

Emgu.CV.UI.dll的路徑在C:Emguemgucv-windows-x86 2.3.0.1416in

加入工具箱以後,我們可以確認一下有沒有成功加入成功。

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第7张

若成功加入工具箱則會在工具箱內自動新增四個元件

最後在加入開發程式時所需的dll函式庫,就可以開始编程。

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第8张

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第9张

包括Emgu.CV.dll、Emgu.CV.ML.dll、Emgu.CV.UI.dll、Emgu.Util.dll、ZedGraph.dll等文件。

相關的dll檔一樣在C:Emguemgucv-windows-x86 2.3.0.1416in底下

[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010第10张

至於需要加那些dll,則看需求。

到目前為止,從環境的建置一直到建立專案完整的步驟都如上面所述。

五、调试测试

是否能正常运行,用下面的例子可以测试一下,如果正常,可以弹出窗口显示一张图片。

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingEmgu.CV;
usingEmgu.Util;

namespaceEmguDemo
{
    public partial classForm1 : Form
    {
        publicForm1()
        {
            InitializeComponent();
        }

        private void button1_Click(objectsender, 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(0);
            CvInvoke.cvReleaseImage(refimg);
            CvInvoke.cvDestroyWindow("Hello");
        }
    }
}

注意更改图片的绝对路径。这种错误不要再犯。

六、错误处理

大部分遇到的问题都是一样,“cvinvoke”异常。

个人感觉,还是DLL链接库没有完整拷贝到程序文件夹导致的。
这里给出几个解决方案供大家参考。
http://blog.sina.com.cn/s/blog_6233611f01016mpj.html
尝试了一下,没通过,但是后来重新看了一下,是我没有严格按照步骤处理,但后来的解决方案,和他的差不多。学习不认真( ⊙ o ⊙ )啊!
(二)EMGU官网给出的权威解决办法,全英文,比较简单,翻译一下关键部分。

Have you installed MSVCRT?

是否安装了Microsoft Visual C++ 2010 SP1可再发行组件包x86,现在基本都带了,这个不是问题。

Have you copied theOpenCVdlls to the execution directory?

Make sure the unmanaged DLLs are in the execution directory.

  • For EMGU CV version 2.4cudart64_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"
最好的方法,就是把用到的unmanaged DLLs添加到工程中。
5点半起来送完客人,花了一个半小时把昨天的经验总结一下,头脑清爽,早上干活效率真是高效,写完可以去睡觉了。

免责声明:文章转载自《[转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux驱动(七)gpiolib库详解zabbix实现自定义监控下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MAC下Xcode配置opencv(2017.3.29最新实践,亲测可行)(转)

本文原创,未经同意,谢绝转载!(转载请告知本人并且经过本人同意--By Pacific-hong) 本人小硕一枚,因为专业方向图像相关,所以用到opencv,然后网上MAC下Xcode配置opencv的教程比较少,要不然就是过时了。所以在一番倒腾之后,成功配置了OpenCV。写下本文供他人参考,少走弯路。 一.版本介绍 首先介绍macOS,Xcode,Op...

windows环境下的Anaconda安装与OpenCV机器视觉环境搭建

https://blog.csdn.net/iracer/article/details/80498732 本文介绍win7和win10系统下通过Anaconda配置基于python语言的机器视觉编程环境(博主测试了两个系统下的安装基本相同),主要内容包括: Anaconda下载安装OpenCV下载安装测试安装结果本文安装的版本为:Anaconda4.2+...

java 实现基于opencv全景图合成

因项目需要,自己做了demo,从中学习很多,所以分享出来,希望有这方面需求的少走一些弯路,opencv怎么安装网上教程多多,这里不加详细说明,我安装的opencv-3.3.0  如上图所示,找到相应的jar包,这里讲一下如何这个jar如何导入Maven仓库 mvn install:install-file -Dfile=D:opencv-3.0.0ope...

基于vs2012的opencv开发环境搭建

  前些日子有个需求,大概描述,实时检测一副动态图每一帧画面上全部的圆形内容,并得到全部圆形的圆心相对坐标以及半径。当时的思路是用Matlab写一个相关图像处理的插件,然后给C#调用。当时没立马动手的原因是matlab更偏向计算以及理论验证,一些灰度、二值化的算法需要新写,在图像处理方面的封装易用性方面不够实用。于是乎就到了题目所说的opencv了,是一个...

C++ Opencv 傅里叶变换的代码实现及关键函数详解

一、前言 最近几天接触了图像的傅里叶变换,数学原理依旧不是很懂,因此不敢在这里妄言。下午用Opencv代码实现了这一变换,有一些经验心得,愿与大家分享。 二、关键函数解析 2.1copyMakeBorder() 扩展图片尺寸 傅里叶变换的计算对图像的尺寸有一定要求,尺寸不满足要求的,可用copyMakeBorder() 函数进行扩展。函数定义如下: voi...

2020系统综合实践 第7次实践作业 11组

目录 1.在树莓派中安装opencv库 1.1 安装依赖 1.2 下载OpenCV源码 1.3 安装pip 1.4 安装Python虚拟机 1.5 编译OpenCV 1.6 安装OpenCV 2.使用opencv和python控制树莓派的摄像头 3.利用树莓派的摄像头实现人脸识别 facerec_on_raspberry_pi.py face...