树莓派摄像头模块应用程序文档翻译[转],树莓摄像头


更新日志:

2014 年 3 月 24 日更新:根据 2013 年 12 月更新的文档,对原译文进行扩展翻译。翻译完毕。 2014 年 3 月 4 日更新:根据 2013 年 12 月更新的文档,对原译文进行扩展翻译。部分内容未翻译完毕。 2013 年 8 月 4 日更新:根据 Raspberry Pi 官方论坛发布的 RaspiCam 正式文档进行扩展翻译。硬件安装和软件安装部分稍后翻译完成。 2013 年 5 月 31 日更新:根据 eLinux 中的 Wiki 内容添加使用 MP4Box 对视频进行封装的介绍。 2013 年 5 月 24 日更新:根据 2013 年 5 月 10 日更新的官方文档完成了初步翻译。

本文会在适当的时间里进行增删改等操作,如果您对该文感兴趣,可以仅收藏本页。

RaspiCam 文档

本文档将对 2013 年 12 月 7 日为止可用的三个 Raspberry Pi 摄像头应用程序进行介绍。

目前提供了三个应用程序,分别为:raspistillraspividraspistillyuv。其中 raspistill 和 raspistillyuv 非常相似,并且都是用于捕捉图像,而 raspivid 用于捕捉视频。

所有应用程序均基于命令行方式运行,通过 OpenMAX 的 mmal API 进行编写。OpenMAX 的 mmal API 提供了更易使用的系统组件。注意,mmal 是一个由 Broadcom 为 Videocore 4 系统定制的 API。

应用程序使用了四个 OpenMAX(mmal)组件:camera(摄像)、preview(预览)、encoder(编码)、null_sink。所有应用程序均使用了摄像组件,raspistill 使用了图像编码组件,raspivid 使用了视频编码组件,raspistillyuv 没有使用编码组件,而是直接将 YUV 或 RGB 从摄像组件输出到文件。

预览显示为可选参数,但是可以用于全屏或输出到指定的显示器显示区域进行显示。如果预览被禁用,那么 null_silk 组件将会对预览帧进行“吸收”。这是由于尽管不需要摄像头生成供显示所用的的预览帧,但是仍需要使用它们进行曝光计算和白平衡设置的缘故。

此外,还可以省略文件名参数,这样既可以直接预览显示而不写入文件,或者直接输出到标准输出设备上。命令行帮助可以通过直接输入应用程序名称获得。

 

安装摄像头硬件

警告:摄像头对静电非常敏感。如果您在安装摄像头电路板时没有防静电手环,可以尝试触摸一下水龙头、金属水槽或其它类似的东西即可。

摄像头电路板与 Raspberry Pi 通过一条 15 芯的排线进行连接。仅有两个连接座需要连接,排线需要安装到摄像头电路板和 Raspberry Pi 上。您需要正确安装,否则摄像头无法工作。对于摄像头电路板,排线末端的蓝色标记应该背对着电路板。而 Raspberry Pi 部分,蓝色标记应该正对着网络接口方向(如果您使用的是 Model A,那么也是需要正对着网络接口预留位)。

尽管两部分连接座不尽相同,但它们的工作方式很相似。对于 Raspberry Pi,拉起连接座两端的卡扣。它应该很容易拉起,并能够轻微活动。把排线完全插入到连接座中,并保证竖直,然后轻轻按下两端的卡扣。摄像头电路板方面,也需要您将卡扣向电路板相反方向拉开,然后轻轻插入排线,最后将卡扣推回。摄像头电路板的连接座与 Pi 上的区别就在这里。

安装摄像头软件

执行下文介绍的命令行进行下载并安装最新的内核,GPU 固件及应用程序。您需要连接到互联网才可以实现以下操作。

sudo apt-get update
sudo apt-get upgrade

接下来,您首先需要在 Raspberry Pi 的 raspi-config 程序中启用摄像头的支持。

sudo raspi-config

将光标移动到摄像头选项(Camera option)处,并选择启用(Enable)。在退出 raspi-config 时会要求您重新启动。启用选项是为了确保重启后 GPU 固件能够正确运行(包括摄像头驱动和调节电路),并且 GPU 从主内存划分到了足够的内存使摄像头能够正确运行。

测试系统已经完成安装并正常工作,可尝试以下命令:

raspistill -v -o test.jpg

这将显示来自摄像头 5 秒钟的预览图像,并且拍摄一张照片,然后保存为文件 test.jpg,同时显示出需要相关信息。

故障排除

如果摄像头工作不正常,您可以尝试以下操作。

连接排线是否连接正确?它们必须都垂直插入到插槽中。 摄像头模块的连接座是否紧密的贴合到了电路板上?摄像头模块电路板上连接座的黑色卡扣,有时会发生松动。用指甲轻轻拉开,并且重新将排线插入,并且把卡扣按回。 是否运行过 sudo apt-get update 和 sudo apt-get upgrade 了? 是否运行过 raspi-config 并启用了摄像头选项? 您的电源合适吗?除 Raspberry Pi 所要求的电量,摄像头将需要额外的 200-250mA 的电量。

如果仍然无法工作,可以尝试以下操作:

Error : raspistill/raspivid not found. 该提示可以意味着您 update/upgrade 操作失败了。请重试。

Error : ENOMEM displayed. 摄像头没有启动。请再次检查所有的连接线。

Error : ENOSPC displayed. 摄像头可能使 GPU 内存溢出了。检查 /boot/ 目录下的 config.txt 文件内容。gpu_men 选项,最少应该为 128。

如果以上内容都尝试过了,摄像头仍然无法工作,那么它可能出现问题了。可以尝试在 Raspberry Pi 论坛的 Camera 板块找找是否有更多可用的帮助。

通用命令行参数

预览窗口

–preview, -p 预览窗口设置 <‘x,y,w,h’>

允许用户在屏幕上定义预览窗口的大小和位置。注意,这将在所有其它窗口/图像的上层显示。

–fullscreen, -f 全屏预览模式

强制预览屏幕全屏显示。注意,这将会保留输入图像的长宽比例,所以可能会在图像的边缘出现填充条。

–nopreview, -n 不显示预览窗口

完全禁用预览窗口。注意,尽管预览窗口被禁用,但摄像头仍然在进行处理,所以会继续消耗资源。

–opacity, -op 设置预览窗口透明度

设置预览窗口的透明度。0 为完全透明,255 为完全不透明。

摄像头控制参数

–sharpness, -sh 设置图像锐度(-100 – 100)

设置图像的锐度,默认为 0。

–contrast, -co 设置图像对比度(-100 – 100)

设置图像的对比度,默认为 0。

–brightness, -br 设置图像亮度(0 – 100)

设置图像的亮度,默认为 50。0 为最暗,100 为最亮。

–saturation, -sa 设置图像饱和度(-100 – 100)

设置图像色彩饱和度。默认为 0。

–ISO, -ISO 设置捕捉 ISO

为捕捉图像设置 ISO。范围为 100 到 800。

–vstab, -vs 打开视频稳定

仅用于视频模式,用于开启视频稳定。

–ev, -ev 设置曝光补偿

设置图像的曝光补偿。范围为 -10 到 10,默认为 0。

–exposure, -ex 设置曝光模式

可能用到的参数为:

auto – 使用自动曝光模式 night – 夜间拍摄模式 nightpreview -夜间预览拍摄模式(暂且这么称呼) backlight – 逆光拍摄模式 spotlight – 聚光灯拍摄模式 sports – 运动拍摄模式(高速快门等) snow – 雪景优化拍摄模式 beach – 海滩优化拍摄模式 verylong – 长时间曝光拍摄模式 fixedfps – 帧约束拍摄模式 antishake – 防抖模式 fireworks – 烟火优化拍摄模式

注意,不是所有的设置都会在对摄像头进行微调时得到相应作用。

–awb, -awb 设置自动白平衡

可能用到的参数为:

off – 关闭白平衡测算 auto – 自动模式(默认) sun – 日光模式 cloud – 多云模式 shade – 阴影模式 tungsten – 钨灯模式 fluorescent – 荧光灯模式 incandescent – 白炽灯模式 flash – 闪光模式 horizon – 地平线模式

–imxfx, -ifx 设置图像特效

设置应用于图像上的特效

可能用到的参数为:

none – 无特效(默认) negative – 反色图像 solarise – 曝光过度图像 posterize – 色调图像 whiteboard – 白板特效 blackboard – 黑板特效 sketch – 素描风格特效 denoise – 降噪图像 emboss – 浮雕图像 oilpaint – 油画风格特效 hatch – 草图特效 gpen – 马克笔特效 pastel – 柔化风格特效 watercolour – 水彩风格特效 film – 胶片颗粒风格特效 blur – 模糊图像 saturation – 色彩饱和图像 colourswap – 暂未可用 washedout – 暂未可用 posterise – 暂未可用 colourpoint – 暂未可用 colourbalance – 暂未可用 cartoon – 暂未可用

–colfx, -cfx 设置色彩特效

指定图像 U 和 V 通道的参数(范围 0 到 255)。例如:–colfx 128:128 将得到一张单色图像。

–metering, -mm 设置测光模式

为预览和捕捉指定测光模式

可能用到的参数为:

average – 全画面平衡测光 spot – 点测光 backlit – 模拟背光图像 matrix – 阵列测光

–rotation, -rot 设置图像旋转(0 – 359)

对取景器和最终得到的图像进行旋转。可以接受 0 以上任何值,但由于硬件限制,只支持 0、90、180、270 度。

–hflip, -hf 设置水平翻转

水平翻转预览和保存的图像。

–vflip, -vf 设置垂直翻转

垂直翻转预览和保存的图像。

–roi, -roi 设置传感器感光区域

允许指定用于预览和捕捉的源所使用的传感器区域。该功能中 x 和 y 参数指定了坐上角的坐标,以及定义了宽度和高度值,并且所有值都为标准化坐标(0.0 到 1.0)。那么,感光区域设置为横向和纵向都为一半,并且宽度和高度都为传感器的四分之一时,可以写为:

-roi 0.5,0.5,0.25,0.25

–shutter, -ss 设置快门速度

设置快门的速度为指定的值(单位为微秒)。据当前的考证,目前未定义时,快门速度上限大约为 330000us(330ms 或 0.33s)。

应用程序专有设置

raspistill

–width, -w 设置图像宽度

–height, -h 设置图像高度

–quality, -q 设置 JPEG 品质

品质为 100 时几乎等同于未压缩。75 相对是比较好的选择。

–raw, -r 向 JPEG 元数据中添加 RAW 信息

该参数将从摄像头获取到的 RAW 信息插入到 JPEG 元数据中。

–output, -o 输出文件名

指定输出的文件名。如果不指定,将不保存到文件。如果文件名为“-”,将输出发送至标准输出设备。

–latest, -l 链接最后一帧到文件名

基于该名称做一个指向最后一帧的文件系统链接。

–verbose, -v 在运行过程中输出详细信息

在程序运行过程中,输出调试/详细信息。

–timeout, -t 获取图片前的时间

程序将执行指定的时长,然后进行获取操作(前提是 output 已指定)。如果未指定,将设置为 5 秒。

–timelapse, -tl 间隔拍摄模式

指定多次拍摄之间所间隔的毫秒值。注意,您需要在文件名中加入 %04d 做为画面计数。

-t 30000 -tl 2000 -o image%04d.jpg

将会在 30 秒的时间内,每两秒拍摄一次,并且将文件命名为:image1.jpg、image0002.jpg…image0015.jpg。注意 %04d 表示在文件名中数字部分加入前导零,使其成为 4 位数。例如,%08d 将生成 8 位数字。

如果间隔时间设置为 0,程序将不间断(取决于系统负担及存储速度)进行拍摄。不过需要注意,每次捕捉前还是会有 30ms 的最小暂停时间,用于曝光计算操作。

–thumb, -th 设置缩略图参数(x:y:quality)

允许指定插入到 JPEG 文件中缩略图信息。如果不指定,将为默认的 64×48 质量为 35 的缩略图。

如果设置为 –thumb none,那么将不会向文件中插入缩略图信息。文件的尺寸也会稍微变小。

–demo, -d 运行演示模式

该参数将循环使用所有摄像头参数,并且不会捕捉。而且无论是否完成所有的循环,在超时周期到达时都会停止演示操作。循环之前的时间需要设置毫秒值。

–encoding, -e 指定输出文件的编码

可用的参数为 jpg、bmp、gif、png。注意,未被硬件加速支持的图像格式(gif、png、bmp)在保存的时候要比 jpg 格式耗时更长。还需要注意,文件扩展名在编码时将被完全忽略。

–exif, -x 在捕捉的内容中加入 EXIF 标签(格式为 ‘key=value’)

允许在 JPEG 图像中插入特定的 EXIF 标签。您可以插入 32 条记录。这是非常实用的功能,比如插入 GPS 元数据。例如设置经度

–exif GPS.GPSLongitude=5/1,10/1,15/100

该命令将会设置经度为 5 度 10 分 15 秒。查看 EXIF 文档获得所有可用标签的详细信息。支持的标签如下:

IFD0. 或 IFD1.

<ImageWidth, ImageLength, BitsPerSample, Compression, PhotometricInterpretation, ImageDescription, Make, Model, StripOffsets, Orientation, SamplesPerPixel, RowsPerString, StripByteCounts, Xresolution, Yresolution, PlanarConfiguration, ResolutionUnit, TransferFunction, Software, DateTime, Artist, WhitePoint, PrimaryChromaticities, JPEGInterchangeFormat, JPEGInterchangeFormatLength, YcbCrCoefficients, YcbCrSubSampling, YcbCrPositioning,

相关内容