2.4 树莓派视觉开发技术
2.4.1 树莓派简介
树莓派由注册于英国的慈善组织“Raspberry Pi基金会”开发,埃本·阿普顿(Eben Upton)为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben Upton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名“树莓派”。这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这一款电脑无论是在发展中国家还是在发达国家,会有更多的其他应用不断被开发出来,并应用到更多领域。在2006年树莓派早期概念是基于Atmel的ATmega644单片机,首批上市的10000台树莓派的“板子”,由中国台湾和大陆厂家制造。
它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能,只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线,见图2-61。
图2-61
树莓派的生产是通过有生产许可的三家公司(Element 14/Premier Farnell、RS Components及Egoman)进行的。这三家公司都在网上出售树莓派。
2.4.2 树莓派编程语言——Python
自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,Python的使用率呈线性增长。由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如以下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序,见图2-62。
图2-62
2.4.3 树莓派摄像头
树莓派摄像机模块是一个500万像素的定制设计的附加树莓派组件,采用了定焦镜头,见图2-63。它能够拍摄2592×1944像素的静态图片,同时还支持1080p30、720p60、640×480p60/90视频。它通过插入在板上表面的小插槽中的方式连接,并使用专用的CSI接口,特别适用于连接摄像头,见图2-64。
图2-63
图2-64
电路板本身极其小巧,尺寸为25mm×20mm×9mm。它的重量仅有3g,使得它非常适合那些对尺寸和重量敏感的移动APP或其他应用程序。它通过一个短的带状电缆的方式连接到树莓派。该传感器本身具有500万像素的原始分辨率,并具有板载一个定焦镜头。具有1.4mm×1.4mm的像素用的OmniBSI技术,高性能(高灵敏度,低串扰,低噪声)的1/4自动图像控制功能:自动曝光控制(AEC);自动白平衡(AWB);自动带通滤波器(ABF);自动50/60Hz luminace检测;自动黑电平校正(ABLC)。
2.4.4 树莓派上配置摄像头
第一步:将摄像头连接到树莓派上。摄像头的带状线缆需要连接到树莓派的特殊连接头上,就在紧靠以太网口的位置。
第二步:升级系统。要使用摄像头模块,必须使用一个较新的操作系统,它能识别出摄像头模块已连接上。最简单的方法就是直接从树莓派官网去下载一个Raspbian的系统镜像,然后安装到一个全新的SD卡上。
不管用户的Raspbian系统版本是什么,都推荐使用以下命令来更新系统:
根据SD卡的新旧程度,升级系统所花费的时间会有所不同。
第三步:在raspi-config中使能摄像头。升级完成后重启系统,如果用户使用的是最新版的系统,raspi-config组件应该会自动加载。如果不是,那么可以通过命令来手动运行:
移动到“camera”选项,按下回车键,见图2-65。
图2-65
选择“Enable”,然后回车,见图2-66。
图2-66
选择“Yes”,回车后树莓派会重新启动,见图2-67。
图2-67
通过raspi-config工具更新了操作并使用摄像头之后,它会告诉树莓派摄像头已经连接成功,并增加了2个命令行工具,以供用户使用摄像头。
这2个命令可分别拍摄静帧照片和HD视频。
2.4.5 树莓派摄像头的Python环境配置
(1)安装Python图像处理库——PIL
在Debian/Ubuntu Linux下直接通过apt安装:
$ sudo apt-get install python-imaging
Mac和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:
$ sudo easy_install PIL
如果安装失败,根据提示先把缺失的包(比如openjpeg)装上。
运行以下Python代码,检测是否正常安装:
import Image
# 打开一个jpg图像文件,注意路径要改成用户自己的:
im=Image.open('/Users/michael/test.jpg')
# 获得图像尺寸:
w,h=im.size
# 缩放到50%:
im.thumbnail((w//2,h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('/Users/michael/thumbnail.jpg','jpeg')
(2)在Python中安装树莓派摄像头的开发库picamera
在终端中输入以下代码:
$ sudo apt-get update
$ sudo apt-get install python-picamera
运行以下Python代码,以测试是否正常安装:
2.4.6 树莓派视觉系统开发实例
例2-3 用默认设置录制一段10s的视频。
注意:用户应该一直确保close()方法被调用,即使清理picamera对象的资源也一样。
例2-4 这个例子展示了Python中的with语句在暗中调用了close()方法。
例2-5 这个例子展示了一些属性能够实时进行调节,即使是正在预览,在这个例子中,亮度也随着时间不断变化。
例2-6 这个例子展示了如何调整摄像头的分辨率到640×480(这个方法不能在录制时调用),然后开始预览,并且录制视频到文件。
摄像头的默认分辨率是显示器的分辨率,如果显示器被禁用了,那么默认的分辨率就是1280×720。
注意:上面用到wait_recording()而不是time.sleep()方法,这个方法会检查错误(例如硬盘空间),在录制时,如果用time.sleep(),那么在出现异常时,stop_recording()在时间结束后才会被调用。
例2-7 这个例子展示了开始预览,修改一些参数,然后拍摄一张照片,这一切发生在preview进行时。
例2-8 这个例子展示了如何在图片上添加水印,通过调用capture()即可。
例2-9 这个例子展示了拍摄一连串照片,每张照片的间隔时间为1min,调用capture_continuous()方法。
例2-10 这个例子使用video-port,capture_sequence,以极快的速度捕获120张连续的低分辨率的JPEG图像,捕获图像的帧率会在后面输出。
例2-11 这个例子展示了捕获一张未经编码的RGB格式,并且产生一个numpy序列。
例2-12 捕捉图像到文件。
捕获图像到文件十分简单,仅仅通过给出文件的名字就可以做到,不论用户使用何种capture()方法。
请注意picamera打开的文件(例如上例中)会被清空并关闭,以便当capture方法用到时,数据能够被其他进程使用。
例2-13 捕获图像到数据流。
捕获图像到1个类似于文件的对象(例如1个socket()对象,1个io.BytesIO流等等)是很简单的,定义此对象作为输出就行了,不论什么时候均可使用capture()方法。
例2-14 捕获图像到PIL对象。
这是捕获图像到数据流的一个变形。首先,创建一个图像到一个字节流,然后把字节流的读取起点设置到开头,然后把这个数据流读入一个PIL对象。
成功读取图像到PIL对象后,即可按照标准图像处理方法进行分析。
机器视觉技术正在与运动控制技术、工业机器人、服务机器人越来越紧密的结合,成为智能制造和智慧生活领域不可或缺的技术链环。常见的机器视觉可以提供诸如零件定位、机器人运动轨迹规划(障碍物判断)、工件加工质量判断和异常情况检测等功能。机器视觉的加入,使得自动化生产系统可以更加智能地处理工作任务,提高了系统的工作效率,降低了系统对于环境的依赖,拓展了系统的应用领域。
机器视觉系统的特点可以归纳为安全、可靠性高、辨识度高、稳定性好,效率高,可提高生产的柔性和自动化程度。正是工业视觉检测系统的这些特点,在一些不适合于人工作业的危险工作环境或人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉;同时在大批量工业生产过程中,用人工视觉检查产品质量效率低且精度不高,用机器视觉检测方法可以大大提高生产效率和生产的自动化程度。而且机器视觉易于实现信息集成,是实现计算机集成制造的基础技术。可以在最快的生产线上对产品进行测量、引导、检测和识别,并能保质保量的完成生产任务。
工业4.0战略的展开方向之一就是智能工厂,在这场新变革中,机器人的研制和开发起到了决定性的作用。机器视觉的最先应用来自于“机器人”的研制,机器人行业的蓬勃发展也为机器视觉的研制提供了极大的推动力,而机器视觉的发展水平也是工业4.0进程中的重要一环。数据显示,2012年世界机器人保有量124万台,同比增长7.1%,按年销量增长9%、机器人平均使用寿命10年估算,2015年世界机器人保有量能达到150万台,2020年保有量将超过250万台。随着机器人使用的进一步普及,机器视觉的市场也得到进一步扩大。另外,越来越多种类和功能的机器人出现,对机器视觉系统的创新性也提出了更高的要求。