匿名
未登录
登录
丢石头百科
搜索
查看“模板:Raspberry Pi Camera User Manual”的源代码
来自丢石头百科
名字空间
模板
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
模板:Raspberry Pi Camera User Manual
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 使用说明 == === 硬件连接 === 把摄像头的排线插入到网口和 HDMI 口之间的排线插槽,银色亮面朝向 HDMI 口。需要先把树莓派板载的排线插槽的扣子拨开,才能插入排线。排线需要紧密插入排线插槽,同时应注意避免排线折弯。排线插入之后,需要把插槽的扣子重新扣上。 === 测试摄像头 === ==== Bullseye系统 ==== *<font color="red">'''更多摄像头设置说明,请参考[https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-and-libcamera-apps 官方文档]'''</font> 注:最新的bullseye镜像,摄像头接口已经默认开启,故无需配置raapi-config。 *进入命令行终端,执行以下语句获取系统更新: <pre> sudo apt-get update sudo apt-get upgrade </pre> *输入命令,进行摄像头预览 <pre> sudo libcamera-hello -t 0 </pre> :如果要关掉预览窗口,可以点击x关掉。 也可以回到终端界面,用ctrl-c终止程序。 *若想抓取图片,可执行命令 libcamera-jpeg -o test.jpg ==== Buster系统 ==== *进入命令行终端,执行以下语句获取系统更新: <pre> sudo apt-get update sudo apt-get upgrade </pre> *使用 raspi-config 配置摄像头。执行: <pre> sudo raspi-config </pre> :依次选择:Interfacing Options --> Camera --> Would you like the camera interface to be enabled? 选择 <Yes> :重启系统:提示 Would you like to reboot now? 选择 Yes :或者执行这个命令重启: <pre> sudo reboot </pre> *配置并且连接完摄像头,只要给树莓派上电即可使用拍照和摄像功能。 *打开树莓派终端,并开启摄像头预览: <pre> sudo raspistill -t 0 </pre> :如果要关掉预览窗口,可以用ctrl-c终止程序。 ==== 检测摄像头 ==== *安装好摄像头后,可通过以下命令来检测摄像头是否有问题,以及开发板是否检测出摄像头和摄像头的数量 ls /dev/video* *可通过v4l2-utils进一步检测摄像头数量以及规格 '''检测摄像头较完整信息''' v4l2-ctl --list-devices 当接入多个摄像头时可通过此命令判断编号对应的摄像头 '''检测摄像头的规格参数''' v4l2-ctl --device=/dev/video0 --list-formats-ext 其中video0可根据你需要查询的摄像头进行更改 === 调用摄像头 === ==== bullseye系统 ==== ===== libcamera-hello ===== *该命令用来预览摄像头并将摄像头画面显示在屏幕上。 *示例: :'''终端执行以下语句即可实时预览摄像头''' <pre> libcamera-hello -t 0 </pre> :其中 -t 0 表示一直预览至终止程序,用户可根据自己的需要进行调整。 *调谐文件: **树莓派的libcamera驱动会针对不同的摄像头模块调用一个调谐文件,调谐文件中提供了各种参数,器调用摄像头的时候,libcamera会调用调谐文件中的参数,结合算法对图像进行处理最终输出成预览画面。由于libcamera驱动只能自动感光芯片信号,但是摄像头的最终显示效果还会受整个模块的影响,调谐文件的使用就是为了可以灵活处理不同模块的摄像头,调整提高图像质量。 **如果在使用默认调谐文件的情况下,摄像头的输出图像不理想的话,用户可以通过调用自定义的调谐文件来对图像进行调整。比如,如果你使用的是官方的NOIR版本摄像头,相对于于Raspberry Pi Camera V2 常规款,NOIR摄像头可能需要不同的白平衡参数,这种情况下就可以通过调用调谐文件来进行切换。 <pre> libcamera-hello --tuning-file /usr/share/libcamera/ipa/raspberrypi/imx219_noir.json </pre> :*用户可以复制默认的调谐文件,根据自己的需求进行修改。 备注:调谐文件的使用适用于其他的libcamera指令,后续指令中就不再做介绍 *预览窗口 **大部分的libcamera指令都会显示一个预览窗口在屏幕上,用户可以通过--info-text 参数来自定义预览窗口的标题信息, 同时也可以通过%directives 调用一些摄像头参数并显示在窗口上 **比如如果使用HQ Camera: 可以通过--info-txe "%focus" 在窗口上显示摄像头的焦距 <pre> libcamera-hello --info-text "focus %focus" </pre> 备注:更多关于参数的设置,可以参考后续的指令参数设置章节 ===== libcamera-jpeg ===== *该命令一个简单的静态图片拍摄程序,libcamera-jpeg相对于libcamera-still来讲更加简洁,并且有很多相同的功能来完成图片拍摄。 *示例: :'''终端执行以下语句会显示一个5秒左右的预览串口,然后拍摄一张全像素的JPEG图像''': <pre> libcamera-jpeg -o test.jpg </pre> :其中test.jpg表示文件名 *用户可以通过-t 参数来设置预览时间,同时可以通过--width 和 --height来设置拍摄图像的分辨率。例如 <pre> libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480 </pre> *所有的libcamera指令都允许用户自己设置快门时间和增益,比如: <pre> libcamera-jpeg -o test.jpg -t 2000 --shutter 20000 --gain 1.5 </pre> :其中 --shutter 20000 表示曝光 20ms, --gain 1.5 表示摄像头增益被设置为1.5倍。 ===== libcamera-still ===== *libcamera-still和libcamera-jpeg非常相似,不同的是libcamera继承了更多raspistill的功能。 *终端执行以下语句即可拍照: <pre> libcamera-still -o test.jpg </pre> :其中test.jpg表示文件名 *libcamea-still支持不同格式的图像文件,可以支持png和bmp编码,也支持直接不带编码或者任何图像格式地将RGB或者YUV像素的二进制转储保存成文件。如果是直接保存RGB或者YUV数据,程序在读取此类文件的时候必须了解文件的像素排列方式。 <pre> libcamera-still -e png -o test.png libcamera-still -e bmp -o test.bmp libcamera-still -e rgb -o test.data libcamera-still -e yuv420 -o test.data </pre> :图像保存的格式是通过-e参数控制的, 如果没有调用-e参数设置的话,默认按照输出的文件名的格式保存。 ===== libcamera-vid ===== *libcamera-vid是一个视频录制程序, 默认使用的是树莓派的硬件H.264编码器。这个程序运行之后会在屏幕上显示一个预览窗口,同时将比特流编码输出到指定文件。 *终端执行以下语句即可录制视频: <pre> libcamera-vid -t 10000 -o test.h264 </pre> :其中-t 10000 表示录制10秒的视频,test.h264表示文件名 :如果要查看视频可以用vlc来进行播放 <pre> vlc test.h264 </pre> ===== libcamera-raw ===== *libcamera-raw类似于视频录制程序,不同的地方时,libcamera-raw录制的是直接传感器输出的Bayer格式的数据,也就是原始图像数据。libcamera-raw不会显示预览窗口。 *终端执行以下语句即可录制一个2秒的原始数据片段: <pre> libcamera-raw -t 2000 -o test.raw </pre> :程序会在没有格式信息的情况下直接转储原始帧,程序会将像素格式和图像尺寸直接打印在终端,用户可以根据输出的数据查看像素数据.默认情况下,程序会将原始帧保存成一个文件,文件通常比较大,用户可以通过--segement参数将文件进行分割。 <pre> libcamera-raw -t 2000 --segment 1 -o test%05d.raw </pre> ==== Buster系统 ==== ===== 拍照 ===== 终端执行以下语句即可拍照: <pre> raspistill -o image.jpg </pre> 此处 image.jpg 是照片文件名。 ===== 摄像 ===== 终端执行以下语句即可摄像: <pre> raspivid -o video.h264 -t 10000 </pre> 其中 -t 10000 表示录制 10 秒,用户各根据自己的需要进行调整。 === 参考资料 === * [http://www.raspberrypi.org/camera 树莓派摄像头教程] == Python 代码控制摄像头 == * 可借助picamera库,使python支持摄像头的控制 * 树莓派镜像在Bullseye版本之后,底层的树莓派驱动由Raspicam切换成libcamera。libcamera是一个开源的软件栈(后面会称呼做驱动,方便理解),方便于第三方移植和开发自己的摄像头驱动。当前的libcamera不支持python, 因此树莓派官方还是提供了Raspicam的安装下载的方法。对于切换成libcamera困难,但是又需要用最新系统的用户,请直接移步到Raspicam的使用说明。 === 预览 === * 打开python IDE,如Thonny Python IDE,或打开记事本 [[File:thonny-app-menu.png|400px]] * 新建名字为camera.py的python文件,并保存到桌面 * 输入以下代码 <source lang="python"> from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(5) camera.stop_preview() </source> * 进入终端,执行 <source lang="python"> python3 Desktop/camera.py </source> 桌面将弹出预览框,实时取景并预览 <source lang="python"> 需要注意的是,预览框仅在直接连接屏幕时有效,而是使用VNC等软件远程连接树莓派桌面,则不会弹出该预览框 </source> 如果预览画面是上下颠倒的,则可以通过以下代码旋转180度 <source lang="python"> camera = PiCamera() camera.rotation = 180 </source> * 预览画面可旋转90度、180度、270度 * 如果要重置画面,可将画面旋转0度 ==== 设置预览框的透明度 ==== <source lang="python"> camera.start_preview(alpha=100) </source> alpha的值范围是0-255 === 拍照 === * 在预览代码的中间插入camera.capture()命令 <source lang="python"> camera.start_preview() sleep(5) camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview() </source> 请注意:必须要执行代码sleep(5),以便给摄像头的传感器留下一定时间调整亮度和白平衡 === 录像 === 移除 camera.captue(),并加入camera.start_recording()和camera.stop_recording() <source lang="python"> camera.start_preview() camera.start_recording('/home/pi/Desktop/video.h264') sleep(5) camera.stop_recording() camera.stop_preview() </source> 以上代码执行后,将在桌面生成video.h264的视频,长度为5秒 === 更多参数 === * picamera可以给图片添加很多参数 ==== 设置分辨率 ==== * 默认情况下,图片的分辨率等于显示器的分辨率,但最大的图像尺寸不超过2592*1944像素,视频尺寸不超过1920*1080像素;图像和视频的最小尺寸则为64*64像素 * 可使用以下代码设置图像的分辨率 <source lang="python"> camera.resolution = (2592, 1944) camera.framerate = 15 camera.start_preview() sleep(5) camera.capture('/home/pi/Desktop/max.jpg') camera.stop_preview() </source> * 请注意,相机的帧数需设置为≤15帧,以支持最大分辨率 ==== 给图片加文字 ==== '''添加文字''' <source lang="python"> camera.start_preview() camera.annotate_text = "Hello world!" sleep(5) camera.capture('/home/pi/Desktop/text.jpg') camera.stop_preview() </source> '''文字大小''' <source lang="python"> camera.annotate_text_size = 50 </source> annotate_text_size的取值范围为6-160,默认值32 '''文字颜色''' <source lang="python"> camera.start_preview() camera.annotate_background = Color('blue') camera.annotate_foreground = Color('yellow') camera.annotate_text = " Hello world " sleep(5) camera.stop_preview() </source> '''修改图片的参数''' * 亮度 <source lang="python"> camera.start_preview() camera.brightness = 70 sleep(5) camera.capture('/home/pi/Desktop/bright.jpg') camera.stop_preview() </source> brightness的取值范围为0-100,默认值50 * 对比度 <source lang="python"> camera.contrast = 50 </source> contrast的取值范围为0-100,默认值50 * 风格 可通过camera.image_effect,给图片添加特效 有效值: * none(默认) * negative * solarize * sketch * denoise * emboss * oilpaint * hatch * gpen * pastel * watercolor * film * blur * saturation * colorswap * washedout * posterise * colorpoint * colorbalance * cartoon * deinterlace1 * deinterlace2 例如 <source lang="python"> camera.start_preview() camera.image_effect = 'colorswap' sleep(5) camera.capture('/home/pi/Desktop/colorswap.jpg') camera.stop_preview() </source> * 模式 可使用camera.exposure_mode,设置拍照模式(如夜晚、运动、雪地等模式) 有效值: * off * auto(默认) * night * nightpreview * backlight * spotlight * sports * snow * beach * verylong * fixedfps * antishake * fireworks 例如 <source lang="python"> camera.start_preview() camera.exposure_mode = 'beach' sleep(5) camera.capture('/home/pi/Desktop/beach.jpg') camera.stop_preview() </source> * 白平衡 可使用camera.awb_mode设置白平衡 有效值: * off * auto(默认) * sunlight * cloudy * shade * tungsten * fluorescent * incandescent * flash * horizon 例如设置白平衡为“白天” <source lang="python"> camera.start_preview() camera.awb_mode = 'sunlight' sleep(5) camera.capture('/home/pi/Desktop/sunlight.jpg') camera.stop_preview() </source>
返回至
模板:Raspberry Pi Camera User Manual
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志