1.1 Raspbian 安装
如果你的树梅派正在使用 Raspbian 系统, picamera 模块已经默认安装在你的系统里, 用几个简单的命令可以检测模块是否运行正常:1
2$python -c "import picamera"
$python3 -c "import picamera"
如果没报错, 那么恭喜你, 模块已经正常运行在你的设备上. 你可以直接开始使用这个模块, 如果模块没有被正常安装, 你可能会得到像下面这样的错误:1
2
3
4
5
6
7
8$ python -c "import picamera"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named picamera
$ python3 -c "import picamera"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named 'picamera'
在 Raspbian 上安装 picamera 模块, 最好使用系统自带的包管理器: apt
. 它能够实现时实更新, 并且方便卸载如果你真的忍心抛弃卸载的话. apt
安装对这个系统上的所有用都有效, 你只需要运行以下几个简单的命令:1
2$ sudo apt-get update
$ sudo apt-get install python-picamera python3-picamera
如果本模块发布了新版本的话, 通过 apt
的正常更新步骤就能同步本模块:1
2$ sudo apt-get update
$ sudo apt-get upgrade
如果你想卸载的话, 只要运行:1
$ sudo apt-get remove python-picamera python3-picamera
1.2 其他发行版安装
相比于 Raspbian, 其他发行版可能用 Python 自带的工具 pip
安装更加方便:1
$ sudo pip install picamera
如果你想用 picamera.array
模块里面的类(classes), 那么你要指定 “array” 参数, 这会把 numpy 模块作为依赖安装:1
$ sudo pip install "picamera[array]"
注意
如果你用一个特别老的版本的 pip, 它会试图从源码安装 numpy. 在性能低的 Pi 上可能会花几个小时. 新版本的 pip 下载和安装一个提前编译好的 numpy 的 wheel 文件. 相对来讲, 这会快很多很多.
将模块同步到最新版本:1
$ sudo pip install -U picamera
卸载的话, 只要运行:1
$ sudo pip uninstall picamera
1.3 固件升级
Pi 摄像头的行为决定于 Pi 的固件版本, 随着时间的推移, 大量对树梅派相机的 bug 修复和功能添加会跟随固件版本推出. 但虽然 picamera 库尽量保持向后兼容旧的固件版本, 但是它只针对最新版进行了测试. 如果你运行在旧的固件版本上, 并不是所有功能都是可用的. 举个例子, 最近的固件版本中添加了 annotate_text
属性, 旧的固件就缺少这个功能.
你可以用以下命令来确定 Pi 的固件版本:1
$ uname -a
#
号后面的数字就是当前固件版本1
2
3
4Linux kermit 3.12.26+ #707 PREEMPT Sat Aug 30 17:39:19 BST 2014 armv6l GNU/Linux
/
/
firmware revision --+
在 Raspbian系统上, 标准的系统更新操作就能保持固件为最新版本:1
2$ sudo apt-get update
$ sudo apt-get upgrade
注意
先前, 本文档推荐使用rpi-update
工具更新 Pi 的固件; 现在已经不鼓励这样做了, 如果你先前使用过rpi-> update
, 通过以下命令你可以切换到使用apt
来管理你的固件更新:
1
2
3
4 $ sudo apt-get update
$ sudo apt-get install --reinstall libraspberrypi0 libraspberrypi-{bin,dev,doc} z
\> raspberrypi-bootloader
$ sudo rm /boot/.firmware_revision
运行完之后, 你需要重启系统.
注意
你需要注意一些 PITFT 屏幕( 还有类似的, 通过 GPIO 驱动的屏幕 ) 需要一个用于驱动屏幕的自定义固件, 这些固件落后于官方固件. 在写这篇文档的时候他们缺少一些特性包括长曝光 (long exposures) 和文本覆盖 (text overlays).