赞
踩
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
笔者的博客网址:VB.Net-CSDN博客
教程相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记
OpenCV是一个开源免费的计算机视觉库,由Intel公司发起并维护,现在由openCV.org维护。它是跨平台的,支持Windows、Linux、macOS和Android等多种操作系统,提供了C++、Python、Java和MATLAB等多种编程语言的接口。
OpenCV库提供了大量计算机视觉相关的函数库,包括图像处理、图像分割、目标检测、机器学习等领域。它可以对图像和视频进行处理、分析和识别,广泛应用于计算机视觉、机器人、自动驾驶、人工智能、医学图像处理等领域。OpenCV库使用C++编写,采用优化算法和多线程技术,具有高效性能。同时,OpenCV库有庞大的社区支持,提供了大量的教程、文档和示例代码,可以帮助开发者快速实现各种图像和视频处理任务。
但是OpenCV没有提供供C#和VB.NET使用的库。
EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它是一个开源、免费的计算机视觉库。EmguCV提供了C#和VB.NET等语言的接口,方便.Net开发者使用,它向C#和VB.NET开发者提供了OpenCV库的大部分功能,包括图像和视频处理、特征提取、目标检测、机器学习等。而且EmguCV提供了简单易用的API接口,可以快速上手进行图像和视频处理任务。
笔者在开始学习的时候仍然使用的是Vs2015,使用的EmguCV是4.0的版本,手里的教程是3.0的版本,感觉教程和实际完全不一样,不得已,只好使用3.0的版本。从网上好不容易找到安装包,然后解压,安装,新建项目,引用Dll……一套流程下来很是复杂。
由于新换了一台电脑,为了不至于太落后,使用的是Vs2022,然后想下载最新的EmguCV来学习开发,于是乎下载了当时最新的4.5.1.4349,但是使用的时候感觉,还是完全和之前学习的3.0版本是两码事。
图1-1 仍然有3个版本的EmguCV静静地躺在我的电脑里
笔者从Vs自带的NuGet下载了最新版本的EmguCV开发,果然顺利多了。建议大家开发的时候还是使用NuGet提供的EmguCV,直接下载使用,不要再去下载安装包。
具体操作如下:
新建一个【Windows窗体应用(.NET Framework)】项目。
图1-2 新建项目
进入新建的项目后,依次点击菜单栏【工具】|【NuGet包管理器】|【管理解决方案的NuGet程序包(N)…】。
图1-3 点击【管理解决方案的NuGet程序包(N)…】
点击【浏览】,输入“emgucv”,此时会出来一大堆相关结果。
选择Emgu.CV、Emgu.CV.Bitmap、Emgu.CV.UI这3个进行安装。截止当前,EmguCV版本为4.7.0.5276。
图1-4 NuGet中下载Emgu.CV
例如安装Emgu.CV,选中Emgu.CV,然后在右侧勾选当前项目,本例中是“learnEmgucv”,可以看到此时是“未安装”,点击【安装】按钮开始安装。
图1-5 安装Emgu.CV到当前项目
安装中途,会要求接受许可才能继续安装。点击【I Accept】按钮。
图1-6 接受许可证
全部安装完后,特别是安装完Emgu.CV.UI后,进入编辑窗口,会看到工具栏多了几个EmguCV的控件。
图1-7 新增的Emgu.CV相关控件
向窗体添加一个ImageBox控件,它和VB.Net自带的PictureBox控件有点类似,选中ImageBox控件后,在【属性】窗口内设置SizeMode属性为StretchImage。
图1-8 添加ImageBox控件
双击窗口空白位置进入代码编写。
【代码位置:frmChapter1】Button1_Click
在所有代码最前面添加引用:
using Emgu.CV;
using Emgu.CV.Structure;
注意:后面的代码中可能还会引用到:
using Emgu.Util;
using System.Runtime.InteropServices;
using Emgu.CV.CvEnum;
using Emgu.CV.UI;……
在窗体载入事件中添加代码:
【代码位置:frmChapter1】Button1_Click
private void Button1_Click(object sender, EventArgs e)
{
Image<Bgr, byte> img = new Image<Bgr, byte>("C:\\learnEmgucv\\lena.jpg");
ImageBox1.Image = img;
}
运行后会提示错误。。。。
此时还需要做一个工作,将笔者提供的配套文件中的X86文件夹(32位程序开发)或X64文件夹(64位程序开发)拷贝到对应的Debug目录下面。
再次运行后如下图所示:
图1-9 通过EmguCV显示图片
在ImageBox控件窗口内,可以通过鼠标实现放大缩小,可以通过点击鼠标右键菜单实现更多功能。
备注:Lena Forsen 是70年代一本瑞典杂志《花花公子》的模特,她在杂志上的一幅照片被 USC 的两名研究员用来测试一个图像压缩算法,于1972年出现在Lena问题的论文中。这张图片的尺寸是512*512像素,有256个灰度级别,包含了人物、头发、纹理、阴影等多种元素,非常适合用于测试和演示各种图像处理算法和技术。后来,人们将lena的黑白照片转换为彩色图像。现在,这张照片在现代计算机图像处理中已经成为了一个经典的测试图像,而彩色版本的Lena图片则可以更好地展示和比较各种图像处理算法和技术的效果。本学习笔记大多代码也是使用的Lena的彩色图像。
【代码位置:frmChapter1】Button2_Click
另外,还可以通过cvinvoke类打开一个包含了图像的窗口,新建一个按钮【Button1】,将一下代码增加到按钮的Click事件中:
//使用CvInvoke.Imshow来显示图像
private void Button2_Click(object sender, EventArgs e)
{
Image<Bgr, byte> img = new Image<Bgr, byte>("C:\\learnEmgucv\\lena.jpg");
CvInvoke.Imshow("img", img);
}
当按下【Button1】后,就会出现一个包含了Lean图像的窗口。
CvInvoke类提供了很多静态方法,它封装了OpenCV中很多处理图像的函数。这里使用了CvInvoke的Imshow方法来显示一张图片。在之后的代码中会慢慢讲解CvInvoke类的其他方法。
至此,验证安装是否成功的工作完成,就可以进入正式开发了。
相比下载EmguCV的安装包,设置全局变量、设置引用。通过NuGet方式显然更简单。
在完成该教程后,笔者发现NuGet中的EmguCV已经升级到4..8.1。可以从
https://github.com/emgucv/emgucv/releases
下载最新的Zip编译安装包,解压后将Libs下的文件夹(按需要)和文件拷贝到Debug目录下。与1.2节 【EmguCV安装】中有所不同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。