IMX219 Camera
| ||||||||||||||||||||||
| ||||||||||||||||||||||
|
目录
产品参数
- 像素:800万像素
- 感光芯片: IMX219
- CMOS尺寸:1/4英寸
- 视场角(FOV):77°/120°/160°/220°
使用说明
Jetson Nano
硬件连接 将摄像头排线,金属面朝向散热板插入Jetson Nano 开发套件上的摄像头接口 启动Jetson Nano 测试摄像头 打开终端(键盘按下Ctrl+ALT+T快捷键打开终端),输入以下指令测试摄像头 DISPLAY=:0.0 nvgstcapture-1.0 测试双摄像头 如果需要测试双摄像头,可以添加sensor-id=x 来选择摄像头。x可以为0 或者 1
- 测试video0
DISPLAY=:0.0 nvgstcapture-1.0 --sensor-id=0
- 测试video1
DISPLAY=:0.0 nvgstcapture-1.0 --sensor-id=1 如果摄像头拍摄效果偏红的话,可以按照以下步骤操作 1.下载camera-override.isp文件,解压到特定文件夹
wget http://www.waveshare.net/w/upload/e/eb/Camera_overrides.tar.gz tar zxvf Camera_overrides.tar.gz sudo cp camera_overrides.isp /var/nvidia/nvcam/settings/ 2.安装文件:
sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp 【注意】
- NV12的12是数字而不是字母
- 测试画面是输出到HDMI或者DP屏幕的,所以测试的时候要先连接屏幕到Jetson Nano
Opencv调用摄像头 如果要用opencv库调用摄像头,可以参考官方的jetcam程序。官方Jetcam例程
树莓派
树莓派镜像在Bullseye版本之后,底层的树莓派驱动由Raspicam切换成libcamera。libcamera是一个开源的软件栈,方便于第三方移植和开发自己的摄像头驱动。截止到2021-12-20, libcamra还是存有很多bug,并且当前的libcamera不支持python。 此IMX219摄像头模块目前仅支持Bullseye系统,使用libcamera命令调用
libcamera-hello
- 这个是一个简单的“hello word" 程序,用来预览摄像头并将摄像头画面显示在屏幕上。
- 终端执行以下语句即可实时预览摄像头:
libcamera-hello -t 0
- 其中 -t 0 表示一直预览至终止程序,用户可根据自己的需要进行调整。
libcamera-jpeg
- 这是一个简单的静态图片拍摄程序,不同于libcamera-still的复杂功能,libcamera-jpeg代码更简洁,并且有很多相同的功能来完成图片拍摄。
- 终端执行以下语句会显示一个5秒左右的预览串口,然后拍摄一张全像素的JPEG图像:
libcamera-jpeg -o test.jpg
- 其中test.jpg表示文件名
- 用户可以通过-t 参数来设置预览时间,同时可以通过--width 和 --height来设置拍摄图像的分辨率。例如
libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480
- 所有的libcamera指令都允许用户自己设置快门时间和增益,比如:
libcamera-jpeg -o test.jpg -t 2000 --shutter 20000 --gain 1.5
- 其中 --shutter 20000 表示曝光 20ms, --gain 1.5 表示摄像头增益被设置为1.5倍。
libcamera-still
- libcamera-still和libcamera-jpeg非常相似,不同的是libcamera继承了更多raspistill的功能。
- 终端执行以下语句即可拍照:
libcamera-still -o test.jpg
- 其中test.jpg表示文件名
- libcamea-still支持不同格式的图像文件,可以支持png和bmp编码,也支持直接不带编码或者任何图像格式地将RGB或者YUV像素的二进制转储保存成文件。如果是直接保存RGB或者YUV数据,程序在读取此类文件的时候必须了解文件的像素排列方式。
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
- 图像保存的格式是通过-e参数控制的, 如果没有调用-e参数设置的话,默认按照输出的文件名的格式保存。
libcamera-vid
- libcamera-vid是一个视频录制程序, 默认使用的是树莓派的硬件H.264编码器。这个程序运行之后会在屏幕上显示一个预览窗口,同时将比特流编码输出到指定文件。
- 终端执行以下语句即可录制视频:
libcamera-vid -t 10000 -o test.h264
- 其中-t 10000 表示录制10秒的视频,test.h264表示文件名
- 如果要查看视频可以用vlc来进行播放
vlc test.h264
libcamera-raw
- libcamera-raw类似于视频录制程序,不同的地方时,libcamera-raw录制的是直接传感器输出的Bayer格式的数据,也就是原始图像数据。libcamera-raw不会显示预览窗口。
- 终端执行以下语句即可录制一个2秒的原始数据片段:
libcamera-raw -t 2000 -o test.raw
- 程序会在没有格式信息的情况下直接转储原始帧,程序会将像素格式和图像尺寸直接打印在终端,用户可以根据输出的数据查看像素数据.默认情况下,程序会将原始帧保存成一个文件,文件通常比较大,用户可以通过--segement参数将文件进行分割。
libcamera-raw -t 2000 --segment 1 -o test%05d.raw
使用说明
Bullseye系统
libcamera-hello
- 这个是一个简单的“hello word" 程序,用来预览摄像头并将摄像头画面显示在屏幕上。
- 终端执行以下语句即可实时预览摄像头:
libcamera-hello -t 0
- 其中 -t 0 表示一直预览至终止程序,用户可根据自己的需要进行调整。
libcamera-jpeg
- 这是一个简单的静态图片拍摄程序,不同于libcamera-still的复杂功能,libcamera-jpeg代码更简洁,并且有很多相同的功能来完成图片拍摄。
- 终端执行以下语句会显示一个5秒左右的预览串口,然后拍摄一张全像素的JPEG图像:
libcamera-jpeg -o test.jpg
- 其中test.jpg表示文件名
- 用户可以通过-t 参数来设置预览时间,同时可以通过--width 和 --height来设置拍摄图像的分辨率。例如
libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480
- 所有的libcamera指令都允许用户自己设置快门时间和增益,比如:
libcamera-jpeg -o test.jpg -t 2000 --shutter 20000 --gain 1.5
- 其中 --shutter 20000 表示曝光 20ms, --gain 1.5 表示摄像头增益被设置为1.5倍。
libcamera-still
- libcamera-still和libcamera-jpeg非常相似,不同的是libcamera继承了更多raspistill的功能。
- 终端执行以下语句即可拍照:
libcamera-still -o test.jpg
- 其中test.jpg表示文件名
- libcamea-still支持不同格式的图像文件,可以支持png和bmp编码,也支持直接不带编码或者任何图像格式地将RGB或者YUV像素的二进制转储保存成文件。如果是直接保存RGB或者YUV数据,程序在读取此类文件的时候必须了解文件的像素排列方式。
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
- 图像保存的格式是通过-e参数控制的, 如果没有调用-e参数设置的话,默认按照输出的文件名的格式保存。
libcamera-vid
- libcamera-vid是一个视频录制程序, 默认使用的是树莓派的硬件H.264编码器。这个程序运行之后会在屏幕上显示一个预览窗口,同时将比特流编码输出到指定文件。
- 终端执行以下语句即可录制视频:
libcamera-vid -t 10000 -o test.h264
- 其中-t 10000 表示录制10秒的视频,test.h264表示文件名
- 如果要查看视频可以用vlc来进行播放
vlc test.h264
libcamera-raw
- libcamera-raw类似于视频录制程序,不同的地方时,libcamera-raw录制的是直接传感器输出的Bayer格式的数据,也就是原始图像数据。libcamera-raw不会显示预览窗口。
- 终端执行以下语句即可录制一个2秒的原始数据片段:
libcamera-raw -t 2000 -o test.raw
- 程序会在没有格式信息的情况下直接转储原始帧,程序会将像素格式和图像尺寸直接打印在终端,用户可以根据输出的数据查看像素数据.默认情况下,程序会将原始帧保存成一个文件,文件通常比较大,用户可以通过--segement参数将文件进行分割。
libcamera-raw -t 2000 --segment 1 -o test%05d.raw