EmguCV学习笔记 VB.Net 第1章 EmguCV

embedded/2024/10/18 14:16:35/

  版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

EmguCV学习笔记目录 Vb.net

EmguCV学习笔记目录 C#

笔者的博客网址:VB.Net-CSDN博客

教程相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记

第1章 EmguCV

1.1 EmguCV

1.1.1 OpenCV

OpenCV是一个开源免费的计算机视觉库,由Intel公司发起并维护,现在由openCV.org维护。它是跨平台的,支持Windows、Linux、macOS和Android等多种操作系统,提供了C++、Python、Java和MATLAB等多种编程语言的接口。

OpenCV库提供了大量计算机视觉相关的函数库,包括图像处理、图像分割、目标检测、机器学习等领域。它可以对图像和视频进行处理、分析和识别,广泛应用于计算机视觉、机器人、自动驾驶、人工智能、医学图像处理等领域。OpenCV库使用C++编写,采用优化算法和多线程技术,具有高效性能。同时,OpenCV库有庞大的社区支持,提供了大量的教程、文档和示例代码,可以帮助开发者快速实现各种图像和视频处理任务。

但是OpenCV没有提供供C#和VB.NET使用的库。

1.1.2 EmguCV简介

EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它是一个开源、免费的计算机视觉库。EmguCV提供了C#和VB.NET等语言的接口,方便.Net开发者使用,它向C#和VB.NET开发者提供了OpenCV库的大部分功能,包括图像和视频处理、特征提取、目标检测、机器学习等。而且EmguCV提供了简单易用的API接口,可以快速上手进行图像和视频处理任务。

1.2 EmguCV安装

笔者在开始学习的时候仍然使用的是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

在所有代码最前面添加引用:

Imports Emgu.CV

Imports Emgu.CV.[Structure]

注意:后面的代码中可能还会引用到:

Imports Emgu.Util

Imports System.Runtime.InteropServices

Imports Emgu.CV.CvEnum

Imports Emgu.CV.UI

……

通常不必专门去引用,笔者使用Vs2022时,发现它会自动增加对以上命名空间的引用。

在窗体载入事件中添加代码:

【代码位置:frmChapter1】Button1_Click

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim img As New Image(Of Bgr, Byte)("C:\learnEmgucv\lena.jpg")

        ImageBox1.Image = img

End Sub

运行后会提示错误。。。。

此时还需要做一个工作,将笔者提供的配套文件中的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 Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim img As New Image(Of Bgr, Byte)("C:\learnEmgucv\lena.jpg")

        CvInvoke.Imshow("img", img)

    End Sub

当按下【Button1】后,就会出现一个包含了Lean图像的窗口。

CvInvoke类提供了很多静态方法,它封装了OpenCV中很多处理图像的函数。这里使用了CvInvoke的Imshow方法来显示一张图片。在之后的代码中会慢慢讲解CvInvoke类的其他方法。

至此,验证安装是否成功的工作完成,就可以进入正式开发了。

相比下载EmguCV的安装包,设置全局变量、设置引用。通过NuGet方式显然更简单。


http://www.ppmy.cn/embedded/97676.html

相关文章

vulnhub系列:Hackademic.RTB1

vulnhub系列:Hackademic.RTB1 靶机下载 一、信息收集 nmap 扫描存活,根据 mac 地址寻找 IP nmap 192.168.23.0/24nmap 扫描端口,开放端口:22、80 nmap 192.168.23.143 -p- -Pn -sV -O访问80端口,页面发现 target …

【热门文章】Eureka原理实践

以下是关于“Eureka 原理实践”的一些可能的步骤和要点: 一、Eureka 原理概述 Eureka 是 Netflix 开发的服务发现框架,其核心原理包括服务注册、服务发现和心跳机制。 服务注册:服务提供者在启动时将自身的信息(如服务名称、IP 地…

SQL(Structured Query Language)规范

SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。为了确保SQL语句的可读性和一致性,遵循一定的SQL编写规范是非常重要的。下面是一些常见的SQL编写规范建议: SQL编写规范 1. 命名规范 表名和字段名&#x…

Django Project | 云笔记练习项目

文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 …

【区块链+金融服务】基于 VoneBaaS 的区块链金融服务管理平台 | FISCO BCOS应用案例

在顺应数字经济发展、强化科技赋能金融的背景下,中央及地方政策层面鼓励“区块链 金融”应用示范项目, 在中小企业征信及风险管理、供应链金融等重点领域开展应用,探索建立区块链金融风险监控体系。同时,随着 科技金融服务逐步升…

RabbitMQ的介绍

一、什么是MQ MQ(message queue),从字面意思上看就个 FIFO 先入先出的队列,只不过队列中存放的内容是 message 而已,它是一种具有接收数据、存储数据、发送数据等功能的技术服务。 消息指的是两个应用间传递的数据。数据的类型有很多种形式…

python 使用正则表达式判断图片路径是否是超链接

在Python中,判断一个给定的字符串(假设为图片路径)是否是网页链接(URL),你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片,但它能判断该字符串是否是…

赋能基层,融合创新:EasyCVR视频汇聚平台构建平安城市视频共享系统

一、雪亮工程建设的意义 雪亮工程的核心在于通过高清视频监控、环境监测和智能预警等先进技术手段,构建一个高效、智能、安全、便捷的社会安全防控体系。这一工程的建设不仅代表了现代化科技手段在城市治安管理中的应用,更是提升社会安全保障能力、推动…