所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

用Mind+学Opencv系列教程一:图像处理基础

肥罗-阿勇 肥罗-阿勇 2022-05-02 10:34:17
projectImage

什么是OpenCV?


       OpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在python中使用。该库是一个跨平台的开源库,是免费使用的。OpenCV库是一个高度优化的库,主要关注实时应用程序。

      OpenCV库是2500多种优化算法的组合,可用于检测和识别不同的人脸,实时识别图像中的对象,使用视频和网络摄像头对不同的人类动作进行分类,跟踪摄像机的运动,跟踪运动对象(例如汽车,人等),实时计数对象,缝合图像来产生高分辨率图像,从图像数据库中查找相似的图像,从使用闪光灯拍摄的图像中消除红眼并提高图像质量,跟踪眼睛的运动,跟踪脸部等。

    OpenCV可以应用但不仅限于以下场景:二维和三维特征提取、街景图像拼接、人脸识别系统、手势识别、人机交互、动作识别、物体识别、自动检查和监视、分割与识别、医学图像分析、运动跟踪、增强现实、视频/图像搜索与检索、机器人与无人驾驶汽车导航与控制、驾驶员疲劳驾驶检测等。功能非常强大,是学习计算机视觉必须掌握的技能之一。

    但是一直以来,要学习OpenCV必须要有一定的Python编程基础,而且都是纯代码编程,对中小学生来说难度太大,但是随着Mind+1.7.2的发布,中小学生掌握OpenCV不再遥不可及。

     本系列教程将以最简单浅显的语言帮助中小学生尽快入门OpenCV,学会后希望各位同学能利用所学知识结合自己的想象力和创造力去做出好的项目。

projectImage

认识Mind+1.7.2
 

    Mind+大家都不陌生,作为中小学创客和人工智能教育最常用的编程平台之一,深受大家喜爱。从1.7.2版本开始,Mind+将集成OpenCV库,然后我们就可以像玩积木一样学习OpenCV了。

projectImage

点击左下角“扩展”,就可以看到1.7.2版本的官方库中新增了很多库,其中就包括OpenCV库。

projectImage

点击加载OpenCV库,在主界面我们可以看到OpenCV的代码模块。

projectImage

下面我们正式进入OpenCV的学习。

图像基础

        对图片进行处理是我们学习OpenCV的第一步,也是学习OpenCV必须掌握的技能,很多同学可能对摄像头获取视频进行处理更感兴趣,视频实际上是一帧一帧地显示,每秒 30-60 次。但是,它们的核心是静态帧,就像图像一样。因此,图像识别和视频分析大部分使用相同的方法。有些东西,如方向跟踪,将需要连续的图像(帧),但像面部检测或物体识别等东西,在图像和视频中代码几乎完全相同。

      完整的图像处理程序通常可以分为以下三个步骤:
     1.读取图像,图像的获取可以有多种不同的来源(相机、视频流、磁盘、在线资源),因此图像的读取可能涉及多个函数,以便可以从不同的来源读取图像;
     2.图像处理,通过应用图像处理技术来处理图像,以实现所需的功能例如,检测图像中的猫);
     3.显示结果,将图像处理完成后的结果以人类可读的方式进行呈现(例如,在图像中绘制边界框,有时也可能需要将其保存到磁盘)。

     更多的图像知识,例如像素,颜色,通道,空间等知识这里不做详细阐述,有兴趣的同学可以在入门后再自行学习。

步骤1 步骤1
读取图片

要使用Opencv读取图像,一般使用imread()函数; 

首先我们在电脑的D盘(其他位置也可以)保存一张图片1.jpg

然后我们用OpenCV读取这张图片,代码如下:

projectImage

这里就是读取一张图片,并将其赋值给 img

特别要注意图片的位置写法,如果程序和图片在同一个目录下,可以不用路径直接写文件名即可。

img在这里实际是一个变量,我们可以直接这样用,但是建议最好设置一个变量img

代码改成如下:

projectImage

运行后,什么都看不到,因为我们只是将图片读入了,并赋值给了变量img

要想看到还必须要对图像进行显示。

步骤2 步骤2
显示图片

要显示图像,有imshow()函数

显示图像用下面的代码模块

projectImage

这样还无法显示,需要不停激活当前窗口,因为完整代码如下:

projectImage

等待按键 27 时间 1 毫秒

这个代码的意思是每隔1毫秒刷新一次,如果按了 ESC 键就执行下面的 中断循环 指令。

也就是只有当我们按 ESC 键的时候才可以关闭显示图片的窗体。

ASCII 码

        ASCII码是一套电脑编码系统,键盘上的各个按键都有自己对应的ASCII码。

        例如:回车键是13;空格键是32;Tab键是9;ESC是27……

        具体每个按键的ASCII码大家自行百度。

步骤3 步骤3
保存图片

保存图片一般用imwrite()函数。

用Mind+保存图片的代码如下:

projectImage

将图片保存在 D盘下面,文件名位 123.jpg

具体根据你的实际情况进行保存,一定要注意保存的路径,如果和程序在同一路径下,可以直接写文件名即可。

步骤4 步骤4
优化程序

上面的程序能顺利完成读取图片,显示图片和保存图片。

其中图片是在一个名为”Hello"的窗体中显示,最好的做法是先创建一个窗体,然后在退出时销毁该窗体,养成良好的习惯。

具体代码如下:

projectImage

下个教程我们将学习对图片进行一些图像大小调整、裁剪、加滤镜等操作。

Makelog作者原创文章,未经授权禁止转载。
3
4
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]