[关闭]
@SiberiaBear 2014-12-08T08:43:34.000000Z 字数 4165 阅读 5507

树莓派摄像头模块<译>

raspberryPi

固定地址:https://www.zybuluo.com/SiberiaBear/note/53130


此文翻译自ICS网站博客文章:The Raspberry Pi Camera Module,感谢分享

介绍

在这一部分,我们将要看看树莓派的摄像头模块,一块支持捕获图片及视频编码的低售价硬件模块,而且是第一个官方为树莓派增加的硬件。我们也将看看摄像头的特征和特点,如何设置它以及测试支持他的软件。
这一部分基于我之前在Qt Developer Days 2013上的一次较短的演讲,之后我还更新了一些东西在里边。

摄像头细节

自从2012年来,树莓派基金会公布说一款官方支持的摄像头模块正在研制中。在2013年3月,树莓派的合作伙伴,RS Components 和 Premier Farnell/Element 14 编写成了一份公告,公告说摄像头模块可以购买了(当然在其他一些地方也可以买到),而且售价是30欧元或者25美元。

摄像头由一款小巧的(25mm X 20mm X 9mm)电路板组成,通过一条软排线连接到树莓派的CSI接口。摄像头传感器拥有着500万像素的分辨率以及一个聚焦透镜。摄像头软件完全支持拍摄最大2592X1944的图片或者1080p30,720p60和640X480p60/90的视频。摄像头如下:

安装过程包括连接软排线到树莓派板子的CSI接口。这是一个微小的接口,但是如果你观看了安装的视频演示,你就不应该有任何安装上的麻烦。

如果你购买了摄像头,你将受到一个小的摄像头板子以及一个排线。你应该想办法设计一些支撑部件去支撑摄像头从而来使用它。一些摄像头支架和树莓派盒子可以购买的到。如果你愿意你也可以自己装配一些简单的支架。我用一个简单小巧的塑料架子来连接到我的树莓派盒子上,如下:

当硬件搭建完毕后,你就可以去设置软件了。

软件

自从摄像头发售起,它支持最新版本的Raspbian——树莓派上最好的操作系统。这个博文中的介绍假设你安装的是Raspbian。第一步是获取最新的树莓派固件(raspberry pi firmware),最新的固件支持摄像头。
你可以打开一个控制台输入:

  1. sudo apt-get udpate
  2. sudo apt-get upgrade

然后需要在树莓派配置页中使能摄像头

  1. sudo raspi-config

在选项中选择“camera”然后选择“Enable support for Raspberry Pi camera”。然后重新启动树莓派。启动后摄像头就使能了。

一些应用应该现在就可以使用了:raspistill可以捕获图像,raspivid可以捕获视频,raspiyuv可以获得未压缩的YUV格式图像。这些都是命令行程序。他们可以带好多参数,你可以不输入参数运行从而来查看有哪些参数可以使用。这里有一些例子,这些例子也包括一些复杂的操作,比如通过网络上传视频流,然后在另外一台电脑上查看。
接下来这些shell指令运行在可以查看的视频捕获程序,作为一个简单的例子:

  1. for effect in none negative solarise sketch denoise emboss oilpaint hatch gpen pastel watercolour film blur saturation colourswap washedout posterise colourpoint colourbalance cartoon
  2. do
  3. echo $effect
  4. raspivid -d -ifx$effect
  5. done

如果你想测试程序的源代码,生成bugs,编译他们,可以在这里找到,你也可以交叉编译或者在树莓派上编译。

User Space V4L2 Driver

摄像头驱动是传感器所有的,它不遵循任何的标准API,这意味着应用程序必须依靠树莓派来编写。在Linux下,标准的摄像头API函数(包括web cams)是V4L(Video for Linux),而且一系列的应用使用V4L驱动既可以支持任何摄像头。树莓派摄像头现在拥有一个独立的开发团队写好的一个user space V4L Driver,在这里可以找到。通过这个驱动,你可以使用通用的Linux应用来控制摄像头。这个驱动有一些限制:它是闭源的,而且由于它是应用程序而不是内核驱动而导致他运行起来比较慢。我测试时应用程序工作的很好而且希望能继续发展。

Official V4L2 Driver

认识到V4L驱动的需求后,树莓派基金会宣布他们正在为博通的芯片开发一个官方的内核V4L驱动。作为一个内核驱动,它应该比user space driver更快。在2013年12月官方驱动可以得到了。驱动很新从而很多人还没有尝试去使用它。最新的Raspbian版本和最新的树莓派固件支持驱动的使用。你也可以自己编写一些代码。如果你想去尝试,一些简单的帮助可以看看:

  1. # Get the latest Raspbian packages
  2. sudo apt-get update
  3. sudo apt-get upgrade
  4. # Get the latest firmware
  5. sudo rpi-update
  6. # Get the source code for the V4L utilities
  7. git clone git://git.linuxtv.org/v4l-utils.git
  8. cd v4l-utils
  9. # Install some packages needed to build it
  10. sudo apt-get install autoconf gettext libtool libjpeg62-dev
  11. # Configure and build it.
  12. autoreconf -vfi
  13. ./configure
  14. make
  15. sudo make install

安装这些东西需要15分钟,你需要开启摄像头而且有足够的GPU内存配置。这里是一些例子:

  1. # Load the module
  2. sudo modprobe bcm2835-v4l2
  3. # Control the viewfinder
  4. v4l2-ctl --overlay=1 # enable viewfinder
  5. v4l2-ctl --overlay=0 # disable viewfinder
  6. # Record a video
  7. v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4
  8. v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=somefile.264
  9. # Capture a JPEG image
  10. v4l2-ctl --set-fmt-video=width=2592,height=1944,pixelformat=3
  11. v4l2-ctl --stream-mmap=3 --stream-count=1 --stream-to=somefile.jpg
  12. # Set the video bitrate
  13. v4l2-ctl --set-ctrl video_bitrate=10000000
  14. # List the supported formats
  15. v4l2-ctl --list-formats

理论上,任何使用V4L API的摄像头应用应该可以再这个驱动下工作。我也鼓励你去尝试,并且反馈好的或不好的情况给开发者。

Qt 支持

Qt 多媒体模块是在Linux支持的摄像头,有 V4L驱动。在Qt5.1下使用user space driver,这里是一些简单的例子:QML,而且我早些时候试着运行而且得到满意的视频。更好一点的解决办法是,我将软件挂起。应用依靠驱动,因为使用V4L-ctl命令重新初始化驱动可以让它重新工作。在小点的分辨率下(像256x256),它可以稳定工作。
我还没有机会去在新的内核和V4L驱动下尝试Qt多媒体模块。

其他硬件

除了官方的树莓派摄像头模块,其他的摄像头支持Linux,像好多USB摄像头,可以再树莓派上工作。

简述

树莓派摄像头模块小巧而廉价。在标准的Linux V4L驱动下,它支持raspistill和raspivid这些自己拥有的命令行程序。你可以去开发更多的应用来支持摄像头,也可以增加硬件。现在人们已经开发了好多有趣的例子。例如,移除透镜可以让他成为一个显微镜,从而可以观察近处的图像和人的特征。
一些人将摄像头和一些舵机结合从而实现摄像头可以通过软件控制来旋转。这里有一个例子,将树莓派和摄像头以及GPS加到气球上,从而实现外太空飞行。如果你对机器视觉感兴趣,免费的OpenCV库可以去使用,包括支持目标跟踪和人脸识别。
就像多数摄像头,树莓派摄像头拥有一个红外屏蔽滤波从而可以很精确的匹配人眼。一个例子,去掉这个滤镜,同样可以应用到一些需要红外检测的地方,像野外拍摄和植物学。

参考

  1. www.raspberrypi.org/camera (Raspberry Pi Camera Installation and Basic Usage Website)
  2. github.com/raspberrypi/userland/tree/master/host_applications/linux/apps/raspicam (Source Code for Camera Applications Website)
  3. www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14 (User Space V4L Driver Website)
  4. www.ics.com/blog/qt-5-multimedia-qml-elements (The Qt 5 Multimedia QML Elements, Jeff Tranter)
  5. www.raspberrypi.org/archives/4733 (Babbage's Big Jump: The Aftermath, Raspberry Pi Website)
  6. opencv.org (OpenCV Project Website)
  7. www.raspberrypi.org/archives/tag/pi-noir (Pi NoIR, Raspberry Pi Website)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注