当前位置:首页  <  应用教程  <  【创客学堂】在树莓派上安装和使用SimpleCV(用于图像处理、识别)...
【创客学堂】在树莓派上安装和使用SimpleCV(用于图像处理、识别)
编辑:Magic 2015-08-06 浏览次数:2814

     1.安装SimpleCV

     SimpleCV的安装十分简便,首先通过apt-get工具安装支持包:
     $ sudo apt-get install ipython python-opencv python-scipy python-numpy python-pygame python-setuptools python-pip


     之后通过pip命令下载并安装SimpleCV:
     $ sudo pip install https://github.com/sightmachine/SimpleCV/zipball/develop


     这样SimpleCV就安装完成了。在终端中输入simplecv即可进入SimpleCV shell。
     $ simplecv


     如果运行SimpleCV提示缺少相应的组件,也可以通过pip指令进行安装,如笔者在运行时提示缺少svgwirte。
     $ sudo pip install svgwrite

      图 SimpleCV shell

      与Python shell类似,使用SimpleCV shell的好处包括通过tab键自动补全,以及通过help命令方便地查询函数和模块的使用说明。

      图 执行help命令(懒得开树莓截图了,抠一张Ubuntu下的图)
      另外还可以访问SimpleCV的官方网站http://simplecv.org/查询API帮助并获取入门指导,或阅读Kurt Demaagd等人编著的书籍《Practical Computer Vision with SimpleCV》。
安装完成后,将USB摄像头连接至树莓派,在SimpleCV shell中输入下面的指令来测试图像捕获功能,即通过SimpleCV拍照。第一句指令初始化摄像头,第二句从摄像头获取一帧图像并保存在img变量中,最后一句则将img中保存的图像显示在屏幕上。
SimpleCV:1> cam=Camera()

SimpleCV:2> img=cam.getImage()

SimpleCV:3> img.show()


       图 使用SimpleCV拍照
       在Python中使用SimpleCV只需要import模块即可,下面的Python代码实现了相同的拍照效果:
import SimpleCV as scv

import time


cam = scv.Camera()

img = cam.getImage()

img.show()

time.sleep(10)


        将代码保存为cap.py,在终端中运行指令:
python cap.py


       1.图像的输入、输出
SimpleCV支持多种灵活的图像输入、输出方式。下面的命令分别用于读取SimpleCV内置图片、本地保存的图片,以及网络图片。
SimpleCV:1> img1 = Image(“logo”)

SimpleCV:2> img2 = Image(“local_img.jpg”)

SimpleCV:3> img3 = Image(“http : //simplecv.org/assets/SM_logo_color. png”)


       获取到的图片,通过save()函数可以保存为多种图片格式。
SimpleCV:1> cam=Camera()

SimpleCV:2> img=cam.getImage()

SimpleCV:3> img.save(“pic.jpg”)

SimpleCV:4> img.save(“pic.png”)

SimpleCV:5> img.save(“pic.bmp”)


       对于动态图像的采集,只需要通过逐帧捕获图像,并连续地显示在屏幕上。下面的代码演示了摄像头的连续显示方法:
import SimpleCV as scv

import time

cam = scv.Camera()

display = scv.Display(resolution = (800, 600))

while display.isNotDone():

img = cam.getImage()

img.save(display)


      代码中的Display模块会以窗口的形式显示,其大小通过resolution属性设定。将图片通过save()函数保存至display就会显示在窗口中。display.isNotDone()用来检测窗口是否被关闭,如果不关闭窗口程序将循环采集和显示摄像头图像。


相关文章:

【创客学堂】如何用SSH登录Banana Pi
【创客学堂】香蕉派安卓系统之网络连接
【创客学堂】从基础到中级,树莓派进阶学习的五个建议
【创客学堂】用Scratch制作打地鼠游戏
------------------------------------------------------------------------------------------------------------------
奥松机器人官网:www.robotbase.cn
微信号:搜索公众号“奥松机器人”
QQ群: 271230889(讨论,解惑)
微博:@奥松机器人基地(新+热)
----------------------------------------------------------------------------------------------------------------
温馨提示:予人玫瑰,手留余香;如果你喜欢这篇文章,不妨转发推荐给你身边的朋友!