1 本篇主要阅读对象、目标及概要如今,Python语言已经成为人工智能领域最热门的开发语言之一,她正在被越来越多的从事人工智能(包括机器人、机器视觉)的机构、和个人所使用,人们在使用python语言的灵活性、易用性及强大的应用模块的同时,也贡献她们的专业优秀模块,在科学各专业领域形成了科学计算的python模块资源,使得初学者便捷快速进行应用开发,降低重复劳动,避免重复制造“轮子”,快速实现程序的专业领域应用及设计规划落地,尤其,在机器人领域,作为机器人工程应用最重要的组成部分——机器视觉,python及其生态开发者为我们提供了诸如opencv-python、numpy、pillow等图像处理所需的模块库,任何人可以通过python自带的工具(pip)方便的安装相对应的版本,进行研究或工程应用。 本篇的阅读对象是致力于使用python或者通过python编程想敲门进入机器人视觉领域的零python基础者,假设具备有一定的其它编程语言的基础经验,掌握了诸如“函数”、“类”、“变量”、“数据类型”、“条件判断”、“循环”、“线程”等概念。 本篇的目标是抛砖引玉地介绍从事机器视觉python研究开发或工程应用所需的最基础知识点,简要介绍图像结构及基础运算、图像处理python基础库、图像识别基本流程、图像坐标变化等知识,帮助初学者入门python的机器人(包括视觉)开发。 本篇讲述的内容如下: (1) Python知识点一。主要讲述python的安装,及依赖环境的搭建,以及上手基础操作。 (2) Python知识点二。主要讲述python机器视觉编程的基础而重要的概念,并配以相应的程序进行说明,重要的概念有:”缩进”、”函数”、”类“、”循环“、基础数据类型等。 (3) Python知识点三。主要讲述python机器视觉编程所需的较为高级的概念,有助于提高性能及简化算法。如:”生成器“、“线程”、”队列“、”装饰器“等。 (4) 图像的读取与运算基础。主要讲述图像从摄像头获取后,图像的数据结构形式、图像的类型、及简单的运算。 (5) 图像处理基础库简介。主要介绍图像处理核心库opencv,以及人机界面PySimpleGUI,两者结合可以达到事半功倍的效果。 (6) 桌面物体识别基本流程。主要介绍了当摄像头获取一张桌面物体的图像后,如果通过以上的知识、工具对图像中的物体进行有效识别,并标记出来。 (7) 图像的坐标计算。主要介绍了如何将图像中的像素与摄像头外的现实空间坐标进行关联,从而实现图像中物体对应于现实世界的坐标定位,为机器人的抓取提供坐标。 当具备了以上基础知识后,读者可以通过翻阅本博客的另一个专题《实用工具集》,进行更深入的练习,改专题在每篇最后都提供了python源代码,方便快速复现。 本篇大部分凭笔者的经验及认识所写,难免会有不系统及遗误,还请读者批评指正。 2 python知识点之——环境及依赖的库安装简述2.1 Python开发环境安装对于初学者来说,建议安装Python集成了常用的python模块的发行版Anaconda,它自带集成了常用的模块外,还配置了spyder、jupyter Notebook两个轻量的开发环境,可以便捷使用。以windows操作系统为例,可以到Anaconda官网下载适合windows/mac/linux对应的安装的版本(根据网站引导实际进入对应操作系统和版本下载)。网上很容易搜索到: 2.2 创建一个python虚拟环境(可选)使用Anaconda一大好处是可以创建不同的python虚拟环境,并且后期对该虚拟环境进行迁移复制,便于后期维护,此外,我们发现,在虚拟环境中编译成exe文件,其文件也相对在常规python环境中要小很多。创建python虚拟环境此步骤为可选,非必须,嫌麻烦可以跳过。创建步骤如下(以windows为例):
等待一会,软件会按照一些必要的文件和库,等待所有进度条完毕,后出现'done'即为安装完毕。
如上图所示,当前行出现刚才创建的环境名“newEvn”说明已经进入了新建的环境了。 2.3 安装Python 机器视觉相关模块(1)快速安装准备(非常必要) 由于Anaconda的默认安装源是国外网站,有时候由于网络原因会安装失败,这样可以将pip的安装装源更换为国内的站点,然后再输入pip安装指令安装对应的模块,更换的办法如下: 命令行终端输入:
(2)安装python库 安装完后,即可以进行本篇所需的其它机器视觉模块的安装,以windows操作系统为例,可以有在线安装和离线安装两种模式,在线安装一个opencv-python模块的步骤如下: 步骤一:打开Anaconda自带的powershell,进入指令窗口,(如果安装了虚拟环境,则再进入2.1所述虚拟环境) 步骤二:在打开的命令行终端,输入安装指令,如pip install opencv-contrib-python==3.4.18.65+回车,这里的版本号(==3.4.18.65)也可以不输入,那么对默认安装最新版本,建议安装opencv3.X,保持与本篇环境同步。 等待安装完毕后,出现successful即为安装完毕。 如果在开发过程中需要安装新模块,模块的安装也可以参考以上安装步骤,不再赘述。 2.4 写第一个Python 图像打开程序完成以上环境及模块安装后,就可以打开spyder编程工具进行python的编程了:
运行结果: 3. python知识点之——重要python编程基础概念简述Python是一种脚本语言,其语法相对其它语言来说约束相对较少,不需要事先声明变量类型,也没有“{}”,python解释器是通过”:”、”tab”、“def”等特殊符合来解释程序的。最基础的语法如下: 3.1 缩进Python里缩进是必须严格执行的语法规则和编码规范,每行代码都必须遵守缩进的原则,保持与上下行代码缩进相对一致,如果忽略缩进规则,或者在同一代码段与上下行的缩进没保持一致,则程序可能无法运行或者运行出错。 缩进可以使用多个空格或者一个Tab指标符。在spyder编辑器里,会自动识别”:”,回车后自动会加入一个Tab缩进: 3.2 If语句Python的if语句格式比较简洁,通过if 条件:进行声明,与或非使用字母 and or not 进行条件判断,以下是if使用举例: 3.3 函数Python是通过”def”+空格+函数名来声明函数的,函数可以有参数,也可以不带参数,函数既可以有返回值,也可以没有返回值,返回值用return + 返回值表示,简单形式如下: Python的函数,有一个很有意思且将来很有用的功能是,它的函数参数可以设置默认值,通过”function(参数=默认值)”表示,这样调用函数时,如果参数不变,就可以不输入这个参数,如果想要改变参数的默认值,调用时就加上想要的参数值,调用时最好写成下图最后一种形式: Python的函数可以带上多个默认参数,这样可以方便地编写带非常多默认参数的图像处理函数,且调用函数时根据需要带上少量参数即可。当然python函数的参数还支持可变参数、关键字参数等,在本篇不再说明。 3.4 类Python的类通过关键词“class +类名”定义,可使用def __init__(self,参数1…)定义类的构造函数。通过“=类名(参数…)”进行实例化一个类。举例如下: 当一个类定义好后,可以单独保存为一个文件,当在工程用到该类时,可以通过”from 文件名import 类名”进行引入,如下: 3.5 循环Python最常用到的循环是for循环和while循环,一个for循环。while循环一般用于循环次数不确定的运算,或者用于一个线程的主循环中,每次循环要对循环条件进行判断。for循环用于较为确定次数的循环,较多用于如列表或字典等类型的遍历等,要想中间退出循环,使用可使用break语句。 (1) while循环的例子 以下示例使用了一个while循环,用于不断读取摄像头的(帧)图像,并当按下键盘q的时候,执行break退出while循环,这样就实现了一个视频的采集程序。 (2) for循环的例子 for循环使用for+变量+in+列表进行声明,以下for循环实现了0到9的加和。 |Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 ) GMT+8, 2025-1-18 09:43 , Processed in 0.045988 second(s), 16 queries . Powered by Discuz! X3.5 © 2001-2024 Discuz! Team. |