|
树莓派镜像在Bullseye版本之后,底层的树莓派驱动由Raspicam切换成libcamera。libcamera是一个开源的软件栈(后面会称呼为驱动,方便理解),方便于第三方移植和开发自己的摄像头驱动。截止到20231211,官方已经针对libcamera提供了pycamera2库,方便用户使用Python程序调用
https://www.raspberrypi.com 树莓派官方libcamera程序使用详细说明
树莓派buster系统版本(也就是老版本)使用Raspicam摄像头库,目前只支持三个型号的摄像头,OV5647,IMX219(带加密芯片),IMX477(带加密芯片) 市场上不带加密芯片的IMX219和IMX477摄像头不支持
可以先更新一下系统:sudo apt update && sudo apt full-upgrade -y
树莓派bookworm系统版本(新版系统)使用libcamera摄像头库,可以扩展各种型号的摄像头,目前支持的型号如下:
sudo nano /boot/config.txt 或者 sudo nano /boot/firmware/config.txt 打开后,找到 camera_auto_detect=1 这条,把后面的数字1改为0 , camera_auto_detect=0
在最后面添加下面内容
#dtoverlay=ov5647
#dtoverlay=imx219
#dtoverlay=imx219,cam0
#dtoverlay=imx477
#dtoverlay=imx290,clock-frequency=37125000
#dtoverlay=imx378
#dtoverlay=ov9281
#dtoverlay=imx296
#dtoverlay=imx519
#dtoverlay=imx708
#dtoverlay=imx708,vcm=0 这里是设置关闭自动对焦功能
使用哪个型号的摄像头,就去掉前面的#号,保存,重启
针对树莓派5,或者树莓派CM3和CM4,这些型号,都支持2个摄像头,设置方式如下:
sudo nano /boot/config.txt 或者 sudo nano /boot/firmware/config.txt ,在最后面添加下面内容
dtoverlay=imx219
dtoverlay=imx219,cam0
以上dtoverlay=imx219 这条默认对应的接口是CSI/DSI1
dtoverlay=imx219,cam0 这条设置对应的接口是CSI/DSI0
树莓派5上使用IMX290,还需要添加json文件到指令目录才能使用。操作如下:
sudo wget https://www.waveshare.net/w/upload/7/7a/Imx290.zip
sudo unzip Imx290.zip
sudo cp imx290.json /usr/share/libcamera/ipa/rpi/pisp
sudo nano /boot/firmware/config.txt
dtoverlay=imx290,clock-frequency=37125000,cam0
保存重启后可以通过 libcamera-hello --list-cameras 这个命令查看是否识别到对应的摄像头
以下是操作摄像头的一下指令:
libcamera-jpeg -h #可以查看详细用法
sudo libcamera-hello -t 0 --camera 0
sudo libcamera-hello -t 0 --camera 1
libcamera-jpeg --camera 1 -t 2000 -o test.jpg
libcamera-jpeg --camera 0 -t 2000 -o test.jpg
libcamera-hello
libcamera-hello -t 0
libcamera-jpeg -o test.jpg
libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480
libcamera-still -o test.jpg
libcamera-vid -t 10000 -o test.h264
rpicam-vid -t 20000 --width 2028 --height 1080 --codec libav -o 1.MP4
rpicam-vid -t 20000 --width 2028 --height 1080 --framerate 50 --codec libav -o 1.MP4
通过SSH操作上面的命令,可能无法查看摄像头的实时图像,最好是在树莓派上接显示器和鼠标键盘,再使用上面的指令,就可以看到实时图像
可以通过libcamera -h 查看libcamera的详细介绍
在测试IMX296全彩摄像头如果出现颜色不能正常显示,可以尝试使用 sudo apt-get full-upgrade 更新系统,重启后再测试,一般都能解决问题。
树莓派buster系统版本的摄像头拍照指令:
可以参考:树莓派摄像头模块应用程序文档翻译
raspistill -o 1.jpg -t 2000
raspistill -cs 0 -o 1.jpg -t 2000
raspistill -cs 1 -o 2.jpg -t 2000
sudo raspivid -t 0 -cs 0
sudo raspivid -t 0 -cs 1
raspistill -3d sbs -w 1280 -h 480 -o 1.jpg
raspivid -t 0 -f -w 640 -h 480 强制全屏显示
raspivid -t 0 -w 1920 -h 1080 -fps 30 -sa 100
raspivid -o 1.h264 默认5秒
raspivid -o 1.h264 -t 10000 时间单位毫秒
raspivid -o 1.h264 -t 10000 -w 1280 -h 720 分辨率设置
raspivid -o 1.h264 -t 10000 -w 1280 -h 720 -fps 24 视频帧率设置
# 两秒钟(时间单位为毫秒)延迟后拍摄一张照片,并保存为 image.jpg
raspistill -t 2000 -o image.jpg
# 拍摄一张自定义大小的照片。
raspistill -t 2000 -o image.jpg -w 640 -h 480
# 降低图像质量,减小文件尺寸
raspistill -t 2000 -o image.jpg -q 5
# 强制使预览窗口出现在坐标为 100,100 的位置,并且尺寸为宽 300 和高 200 像素。
raspistill -t 2000 -o image.jpg -p 100,100,300,200
# 禁用预览窗口
raspistill -t 2000 -o image.jpg -n
# 将图像保存为 PNG 文件(无损压缩格式,但是要比 JPEG 速度慢)。注意,当选择图像编码时,文件扩展名将被忽略。
raspistill -t 2000 -o image.png –e png
# 向 JPEG 文件中添加一些 EXIF 信息。该命令将会把作者名称标签设置为 Dreamcolor,GPS 海拔高度为 123.5米。
raspistill -t 2000 -o image.jpg -x IFD0.Artist=Dreamcolor -x GPS.GPSAltitude=1235/10
# 设置浮雕风格图像特效
raspistill -t 2000 -o image.jpg -ifx emboss
# 设置 YUV 图像的 U 和 V 通道为指定的值(128:128 为黑白图像)
raspistill -t 2000 -o image.jpg -cfx 128:128
# 仅显示两秒钟预览图像,而不对图像进行保存。
raspistill -t 2000
# 间隔获取图片,在 10 分钟(10 分钟 = 600000 毫秒)的时间里,每 10 秒获取一张,并且命名为 image_number_001_today.jpg,image_number_002_today.jpg... 的形式,并且最后一张照片将命名为 latest.jpg。
raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l latest.jpg
# 获取一张照片并发送至标准输出设备
raspistill -t 2000 -o -
# 获取一张照片并保存为一个文件
raspistill -t 2000 -o - > my_file.jpg
#摄像头一直工作,当按下回车键时获取一张照片。
raspistill -t 0 -k -o my_pics%02d.jpg
视频捕捉
图像尺寸和预览设置与图像捕捉相同。录制的视频默认尺寸为 1080p(1920×1080)
# 使用默认设置录制一段 5 秒钟的视频片段(1080p30)
raspivid -t 5000 -o video.h264
# 使用指定码率(3.5Mbits/s)录制一段 5 秒钟的视频片段
raspivid -t 5000 -o video.h264 -b 3500000
# 使用指定帧率(5fps)录制一段 5 秒钟的视频片段
raspivid -t 5000 -o video.h264 -f 5
# 发送到标准输出设备一段 5 秒钟经过编码的摄像头流图像
raspivid -t 5000 -o -
# 保存到文件一段 5 秒钟经过编码的摄像头流图像
raspivid -t 5000 -o - > my_file.h264
|
|