14回答

2收藏

[原创] 【懒兔子玩树莓】SimpleCV安装和使用(用于图像处理、识别)

 

Raspberry Pi Raspberry Pi 17481 人阅读 | 14 人回复 | 2015-07-13

本帖最后由 懒兔子 于 2015-7-13 23:10 编辑

  • 安装SimpleCV

SimpleCV的安装十分简便,首先通过apt-get工具安装支持包:

  1. $ sudo apt-get install ipython python-opencv python-scipy python-numpy python-pygame python-setuptools python-pip
复制代码

之后通过pip命令下载并安装SimpleCV:

  1. $ sudo pip install https://github.com/sightmachine/SimpleCV/zipball/develop
复制代码

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

  1. $ simplecv
复制代码

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

  1. $ 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中保存的图像显示在屏幕上。

  1. SimpleCV:1> cam=Camera()
  2. SimpleCV:2> img=cam.getImage()
  3. SimpleCV:3> img.show()
复制代码

图 使用SimpleCV拍照


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

  1. import SimpleCV as scv
  2. import time

  3. cam = scv.Camera()
  4. img = cam.getImage()
  5. img.show()
  6. time.sleep(10)
复制代码

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

  1. python cap.py
复制代码
  • 图像的输入、输出

SimpleCV支持多种灵活的图像输入、输出方式。下面的命令分别用于读取SimpleCV内置图片、本地保存的图片,以及网络图片。

  1. SimpleCV:1> img1 = Image(“logo”)
  2. SimpleCV:2> img2 = Image(“local_img.jpg”)
  3. SimpleCV:3> img3 = Image(“http : //simplecv.org/assets/SM_logo_color. png”)
复制代码

获取到的图片,通过save()函数可以保存为多种图片格式。

  1. SimpleCV:1> cam=Camera()
  2. SimpleCV:2> img=cam.getImage()
  3. SimpleCV:3> img.save(“pic.jpg”)
  4. SimpleCV:4> img.save(“pic.png”)
  5. SimpleCV:5> img.save(“pic.bmp”)
复制代码

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

  1. import SimpleCV as scv
  2. import time

  3. cam = scv.Camera()
  4. display = scv.Display(resolution = (800, 600))

  5. while display.isNotDone():
  6.     img = cam.getImage()
  7. img.save(display)
复制代码

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

一只搞电子的懒兔子~~
分享到:
回复

使用道具 举报

回答|共 14 个

倒序浏览

沙发

haothree

发表于 2015-7-15 10:20:49 | 只看该作者

多谢兔子分享,学习!
板凳

daefegrh

发表于 2015-7-15 14:18:15 | 只看该作者

新手学习!
地板

杉树林-罗

发表于 2015-7-15 23:38:50 | 只看该作者

顶起,请教一个问题,用各种软件开启连接树莓派的USB摄像头都遇到“Device or resource busy”的情况,楼主有什么好的建议或解决办法吗?
5#

懒兔子

发表于 2015-7-16 10:02:09 | 只看该作者

你的摄像头在树莓派上有可以用的时候吗,还是一直不能用?
换个摄像头试试吧,可能驱动和摄像头不兼容或者你用的软件不行
一只搞电子的懒兔子~~
6#

fighter1

发表于 2015-7-20 09:18:52 | 只看该作者

好教程!
7#

loveeeboard

发表于 2015-7-20 09:19:19 | 只看该作者

杉树林-罗 发表于 2015-7-15 23:38
顶起,请教一个问题,用各种软件开启连接树莓派的USB摄像头都遇到“Device or resource busy”的情况,楼主 ...

帮楼主把答案回复你,
你的摄像头在树莓派上有可以用的时候吗,还是一直不能用?
换个摄像头试试吧,可能驱动和摄像头不兼容或者你用的软件不行
8#

杉树林-罗

发表于 2015-7-20 16:25:45 | 只看该作者

loveeeboard 发表于 2015-7-20 09:19
帮楼主把答案回复你,
你的摄像头在树莓派上有可以用的时候吗,还是一直不能用?
换个摄像头试试吧, ...

属于一直不能用的情况,不过在/dev 下面找得到vedio0这个设备。。。
9#

懒兔子

发表于 2015-7-20 22:10:06 | 只看该作者

杉树林-罗 发表于 2015-7-20 16:25
属于一直不能用的情况,不过在/dev 下面找得到vedio0这个设备。。。

嗯,那还是换个摄像头试试吧。
一只搞电子的懒兔子~~
10#

懒兔子

发表于 2015-7-20 22:10:42 | 只看该作者

loveeeboard 发表于 2015-7-20 09:19
帮楼主把答案回复你,
你的摄像头在树莓派上有可以用的时候吗,还是一直不能用?
换个摄像头试试吧, ...

哈哈,多谢
一只搞电子的懒兔子~~
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条