树莓派IMX462 2MP Starlight Camera教程

简介

产品介绍

IMX462 2MP Starlight Camera是一款星光级摄像头,搭载1/2.8英寸索尼星光级传感器,IMX462 采用Sony被找背照式像素技术,在可见光和近红外段有高质量的成像效果。IXM462 2MP Starlight Camera最大分辨率为1920*1080,板载IR-CUT,可以自由切换日夜模式。摄像头板载ISP处理电路从而进一步增强摄像头成像效果。提供99°和127°两种视场角选项,用户可以根据自己的需求选择。

产品规格

IMX462-99IMX462-127
图像传感器
感光芯片SONY IMX462LQR-C STARVIS
像素2.07MP
分辨率1920×1080
像素尺寸2.9um×2.9um
快门方式卷帘快门
ISP图像处理
帧率1080p@25fps、1080p@30fps
曝光AE(自动曝光)/手动
白平衡AWB(自动白平衡), 手动
快门1/25(1/30)s to 1/50,000s (支持慢快门)
降噪2D/3D降噪
图像设置亮度、对比度、锐度、饱和度、GAMMA可调、图像翻转、图像镜像
图像增强背光补偿、DOL-WDR、去雾
日夜切换外触发同步转换,手动强制彩色、黑白
镜头
视场角(FOV)99.1°(D) / 83.5°(H) / 44.6°(V)127.9°(D) / 106.9°(H) / 56.9°(V)
光圈F1.0F1.61
焦距4.0mm3.18mm
畸变-33.8%-51%
对焦方式手动
工作参数
工作温度-10℃~60℃
工作湿度<=95%无凝结

尺寸图

PCBA尺寸


PCBA 3D图纸


树莓派使用说明

使用说明

由于IMX462不是树莓派默认支持的摄像头型号,因此无法使用树莓派自带的libcamera或者raspicam库。需要另外安装驱动和控制脚本使用。
提供的驱动仅支持树莓派Raspberry PI OS系统,暂时未对其他系统做支持。

配置i2c

打开树莓派终端,输入指令

sudo raspi-config

选择Interface Options -> I2c -> Yes

下载安装驱动

下载驱动前,请确保已经正常烧写最新的树莓派系统,连接好摄像头,并完成开机配置。
打开树莓派终端,并输入以下指令进行安装

wget https://github.com/veyeimaging/raspberrypi_v4l2/releases/latest/download/raspberrypi_v4l2.tgz
tar -xzvf raspberrypi_v4l2.tgz
cd raspberrypi_v4l2/release/
chmod +x *

安装驱动

树莓派5

cd ~/raspberrypi_v4l2/release/
sudo ./install_driver_rpi5.sh veyecam2m

由于在树莓派5上,驱动程序现在使用media control API,必须先正确设置media graph才可以正常使用。这包括正确设置media pad的格式并正确链接它们。 在rpi5_scripts目录提供了一系列脚本实现这个功能。 因此每次重新上电后,需要运行以下指令配置一下,然后才能正常使用。

cd ~/raspberrypi_v4l2/rpi5_scripts/
sudo ./find_entity.sh
sudo ./media_setting_rpi5.sh veyecam2m

其他树莓派

cd ~/raspberrypi_v4l2/release/
sudo ./install_driver.sh veyecam2m

卸载驱动(可选)

如果需要更换其他摄像头型号的额驱动,可以卸载现在的驱动

sudo ./uninstall_driver.sh veyecam2m

测试摄像头

注:如果你是通过远程终端操作摄像头,在使用预览指令前请先输入export DISPLAY=:0指令指定一下屏幕输出。

使用qv4l2预览图像

  • 安装工具
sudo apt-get install qv4l2
  • 运行工具

在终端命令行界面输入以下工具打开软件

qv4l2

运行后,点击左上角的播放图标进行预览即可

使用Gstreamer预览

安装Gstreamer

打开树莓派终端,并输入以下指令进行安装:

sudo apt-get install gstreamer1.0-tools
sudo apt-get install libx264-dev libjpeg-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

抓拍图片

gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video0 ! 'video/x-raw, format=(string)UYVY, width=1920,height=1080' ! jpegenc ! filesink location=test_image.jpg

视频预览

gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2convert capture-io-mode=dmabuf output-io-mode=dmabuf ! autovideosink sync=false -v

视频预览(加时间戳显示)

gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1"  ! videoconvert ! videoscale ! clockoverlay time-format="%D %H:%M:%S" ! video/x-raw, width=640, height=360 ! autovideosink sync=false -v

录制视频 (mkv文件)

gst-launch-1.0 -e v4l2src io-mode=dmabuf device=/dev/video0 num-buffers=300 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2h264enc capture-io-mode=dmabuf output-io-mode=dmabuf extra-controls="controls, h264_profile=4, video_bitrate=6200000" ! 'video/x-h264, profile=high, level=(string)4' ! h264parse ! matroskamux ! filesink location=output.mkv

录制视频(mp4文件

gst-launch-1.0 -e v4l2src io-mode=dmabuf device=/dev/video0  num-buffers=300 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2h264enc capture-io-mode=dmabuf output-io-mode=dmabuf extra-controls="controls, h264_profile=4, video_bitrate=6200000" ! 'video/x-h264, profile=high, level=(string)4' ! h264parse ! mp4mux ! filesink location=video.mp4

TCP视频流传输

树莓派端, 监听端口为5000
gst-launch-1.0 -v v4l2src device=/dev/video0 num-buffers=-1 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2h264enc extra-controls="controls, h264_profile=4, video_bitrate=4000000" ! 'video/x-h264, profile=high, level=(string)4' ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink  host=x.x.x.x port=5000
从机端获取
gst-launch-1.0 -v tcpclientsrc host=x.x.x.x port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false

注意:x.x.x.x需要根据实际的树莓派IP地址更换,比如gst-launch-1.0 -v tcpclientsrc host=192.168.1.10 port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false

使用Opencv获取视频

gst-launch-1.0 v4l2src device=/dev/video0  ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! videoscale ! "video/x-raw,width=640,height=480" ! videoconvert ! "video/x-raw, format=(string)BGR" ! appsink

注意:这里不是直接在树莓派中单运行的,而是最为video.Capture(str)str的参数做调用。

使用Compute Module 计算模块

如果用户使用的是树莓派的CM3或者CM4计算模块,需要安装dtb和设备树文件。

加载设备树

sudo wget https://datasheets.raspberrypi.com/cmio/dt-blob-dualcam.bin -O /boot/dt-blob.bin
sudo cp ~/raspberrypi_v4l2/release/driver_bin/$(uname -r)/veyecam2m.dtbo /boot/overlays/veyecam2m.dtbo
sudo reboot

设备说明

CM4采用两路i2c分别与两个摄像头通信,分别是i2c-0和i2c-10。
如果同时接入两路摄像头,会在系统成识别成video0和video2两个节点。

CAM0预览

gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2convert capture-io-mode=dmabuf output-io-mode=dmabuf ! autovideosink sync=false -v

CAM1预览

gst-launch-1.0 v4l2src io-mode=dmabuf device=/dev/video2 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! v4l2convert capture-io-mode=dmabuf output-io-mode=dmabuf ! autovideosink sync=false -v

Jetson Nano 使用说明

版本说明

IMX462 摄像头在英伟达平台使用要安装相关驱动,加载新的设备树文件。目前支持Jetson Nano, Jetson Xavier NX, Jetson TX2 NX, Jetson AGX Xavier.
注:AGX Xavier等接口封装不同的,需要自己另外购买或做转接板支持。
目前支持的Jetapck版本:

  • Jetpack4.2.2,L4T版本r32.2.1
  • Jetpack4.3,L4T版本r32.3.1
  • Jetpack4.4,L4T版本r32.4.3
  • Jetpack4.4.1,L4T版本r32.4.4
  • Jetpack4.5,L4T版本r32.5
  • Jetpack4.5.1,L4T版本r32.5.1
  • Jetpack4.6,L4T版本r32.6.1
  • Jetpack4.6.1,L4T版本r32.7.1
  • Jetpack4.6.2,L4T版本r32.7.2
  • Jetpack5.0.1DP,L4T版本r34.1.1

查看JetPack版本

如果你不确定你的软件版本是否在支持范围内,可以用以下指令查看。

cat /etc/nv_tegra_release

如果显示 R32 (release), REVISION: 4.3 代表当前的版本为R32.4.3

硬件连接

说明

请将摄像头排线,金手指接触面朝向核心板一侧,接入jetson开发板。


  • Jetpack4.x版本

使用IMX462摄像头,需要更新Jetson系统的Image和dtb部分。Image部分,增加了摄像头驱动,dtb部分则指明了使用的摄像头型号。一般情况下,只需使用已编译好的Image和dtb,非必要情况下,无需根据代码进行编译。

  • JetPack5.0以后的版本(针对Xavier NX和AGX Xavier以及更高性能的模组)

驱动不再编译进Image,而是以独立module的形式加载到系统中。dtb现在依然是采用整体编译到一起的方式以方便进行替换。dtb也可以以overlay形式动态加载。

BSP包

  • 下载路径:
https://github.com/veyeimaging/nvidia_jetson_veye_bsp
  • bsp包内容:
    • 预编译好的不同平台下的dtb
    • driver源码
    • dts源码
    • i2c通信工具集
  • DTB包文件和板卡的对应关系:
    • Nano B01
    tegra210-p3448-0000-p3449-0000-b00.dtb
    • Nano eMMC
    tegra210-p3448-0002-p3449-0000-b00.dtb
    • AGX XAVIER
    tegra194-p2888-0001-p2822-0000.dtb
    • XAVIER NX
    tegra194-p3668-all-p3509-0000.dtb
    (Jetpack5.0.1) tegra194-p3668-0000-p3509-0000.dtb
    • AGX Orin
    tegra234-p3701-0000-p3737-0000.dtb
    • Orin NX
    Jetson Orin NX 16G(P3767-0000):tegra234-p3767-0000-p3768-0000-a0.dtb
    Jetson Orin NX 8G (P3767-0001):tegra234-p3767-0001-p3768-0000-a0.dtb
    • Orin Nano
    Jetson Orin Nano 8G(P3767-0003) and Jetson Orin Nano Devkit(P3767-0005):tegra234-p3767-0003-p3768-0000-a0.dtb
    Jetson Orin Nano 4G (P3767-0004):tegra234-p3767-0004-p3768-0000-a0.dtb

安装驱动

直接在jetson主板上升级。

wget https://github.com/veyeimaging/nvidia_jetson_veye_bsp/releases/latest/download/nvidia_jetson_veye_bsp.tar.gz
tar -xzvf nvidia_jetson_veye_bsp.tar.gz

升级Image(适用JetPack4.x)

  • 备份原来的Image
cp /boot/Image /boot/Image.backup
cp /boot/Image.sig /boot/Image.sig.backup
  • (Jetson Nano)在下载的bsp包中,找到对应的Image压缩包,进行解压,然后执行指令
sudo cp <path to your Image dir>/Image /boot/Image -f
注意这里要将<path to your Image dir>替换成你实际解压出来的Image文件的路径。
  • (NX) 如果你使用的是Xavier NX,需要使用签名版本,也就是带signed字眼的包。
sudo cp <path to your Image dir>/Image /boot/Image -f
sudo cp <path to your Image dir>/Image.sig /boot/Image.sig -f

安装module是(适用JetPack5.x)

  • 查看linux版本
uname -r
  • 在nvidia_jetson_veye_bsp/ko目录下找到对应的驱动版本目录, 运行指令
sudo cp nvidia_jetson_veye_bsp/ko/$(uname -r)/* /lib/modules/$(uname -r)/kernel/drivers/media/i2c/ -f
sudo depmod

升级dtb

  • 在bsp包目录下,找到对应摄像头(VEYE-MIPI-CAM2M)型号和L4T版本号的dtb文件。进行拷贝
sudo mkdir /boot/veyecam/
sudo cp <path to your dtb dir>/<DTB file name> /boot/veyecam -f
  • 备份extlinux.conf文件
cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.back
  • 编辑 /boot/extlinux/extlinux.conf文件,在最下面增加如下一行
FDT /boot/veyecam/<DTB file name>

注:<DTB file name>应当替换为主板对应的dtb名称,确保FDT一行所指明的文件确实正确存在。

  • 重启系统:
sudo reboot

测试摄像头

检查摄像头是否正常连接

在系统升级成功后,可以在Jetson nano终端输入以下指令检测摄像头是否正常连接

dmesg | grep veye

有IMX462等提示即可。同时查看ls /dev/ 有videox设备节点

测试摄像头(Gstreamer)

  • 视频预览1080P
export DISPLAY=:0
gst-launch-1.0 nvv4l2camerasrc device=/dev/video0 ! "video/x-raw(memory:NVMM),format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)NV12" ! nvoverlaysink sync=false
gst-launch-1.0 nvv4l2camerasrc device=/dev/video0 ! "video/x-raw(memory:NVMM),format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false
  • 视频预览1080p (xvimagesink)
export DISPLAY=:0
gst-launch-1.0 -e v4l2src io-mode=4 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1080, framerate=30/1, format=UYVY' ! xvimagesink sync=false
  • 同时预览两路摄像头
WIDTH=960
HEIGHT=540

CAPS="video/x-raw(memory:NVMM),format=(string)UYVY, width=1920, height=1080"

gst-launch-1.0 nvcompositor name=comp sink_0::xpos=0 sink_0::ypos=0 sink_0::width=$WIDTH sink_0::height=$HEIGHT sink_1::xpos=$WIDTH sink_1::ypos=0 sink_1::width=$WIDTH sink_1::height=$HEIGHT ! nvoverlaysink nvv4l2camerasrc device=/dev/video0 ! $CAPS ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420"! comp. nvv4l2camerasrc device=/dev/video1 ! $CAPS ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420"! comp
  • 用Opencv调用Gstreamer
gst-launch-1.0 nvv4l2camerasrc ! video/x-raw(memory:NVMM), format=(string)UYVY, width=(int)1920, height=(int)1080 ! nvvidconv ! video/x-raw(memory:NVMM), format=(string)I420 ! nvvidconv ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink
  • 视频录制1080p
gst-launch-1.0 nvv4l2camerasrc num-buffers=300 ! "video/x-raw(memory:NVMM),format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)NV12" ! nvv4l2h264enc control-rate=1 bitrate=10000000 ! h264parse ! qtmux ! filesink location=filename.mp4 -e
  • 播放录像
gst-launch-1.0 filesrc location=filename.mp4 ! qtdemux ! queue ! h264parse ! nvv4l2decoder ! nvoverlaysink -e
  • 抓拍图片
gst-launch-1.0 v4l2src num-buffers=1 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvjpegenc ! filesink location=jpgname.jpg
Jetpack5.x系统上测试摄像头
  • 视频预览1080p
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY,width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)NV12" ! nv3dsink -e
  • 视频录像1080p
gst-launch-1.0 v4l2src num-buffers=300 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)NV12" ! nvv4l2h264enc control-rate=1 bitrate=10000000 ! h264parse ! qtmux ! filesink location=filename.mp4 -e
  • 抓拍图像
gst-launch-1.0 v4l2src num-buffers=1 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvjpegenc ! filesink location=jpgname.jpg

测试摄像头(v4l2-ctl)

  • 安装v4l2-utils
sudo apt-get install v4l-utils
  • 查看摄像头支持的数据格式
v4l2-ctl --list-formats-ext
  • 帧率统计
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY--stream-mmap --stream-count=-1 --stream-to=/dev/null
  • 保存图片到文件
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv

测试摄像头(yavta)

  • 安装yavta
git clone https://github.com/veyeimaging/yavta.git
cd yavta
sudo make
  • 保存图片到文件
./yavta -c1 -FUYVY-1920x1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0

Opencv例程

参数调节

参数调节

由于IMX462 摄像头板载ISP电路,用户可以通过提供的脚本对摄像头参数进行配置。Jetson nano的脚本可以在下载的bsp包中找到

下载并配置脚本

下载脚本
git clone https://github.com/veyeimaging/raspberrypi.git
cd raspberrypi/i2c_cmd/bin/
配置脚本(非树莓派主板可跳过此步骤)
cd raspberrypi/i2c_cmd/bin/
./enable_i2c_vc.sh
  • 如果是树莓派主板
./camera_i2c_config
  • 如果是树莓派计算模块
./camera_i2c_config 0 #CAM0
./camera_i2c_config 1 #CAM1

配置摄像头

设置wdrmode

  • 读取当前的wdrmode
./veye_mipi_i2c.sh -r -f wdrmode
  • 修改当前的wdrmode
./veye_mipi_i2c.sh -w -f wdrmode -p1 [value]

[value]的数值可以为:

0x00: 背光模式关闭
0x01: 低背光模式
0x02: 高背光模式
0x03: 使能DOL WDR宽动态模式

videoformat

  • 读取当前视频格式
./veye_mipi_i2c.sh -r -f videoformat
  • 设置视频格式
./veye_mipi_i2c.sh -w -f videoformat -p1 [value]

[value]参数:

PAL : 设置为PAL(50Hz)模式,该模式下, 帧率为25fps
NTSC: 设置为NTSC(60Hz)模式,该模式下,帧率为30fps

mirrormode

  • 读取镜像模式
./veye_mipi_i2c.sh -r -f mirrormode
  • 设置镜像模式
./veye_mipi_i2c.sh -w -f mirrormode -p1 [value]

[value]参数:

0x00: 正常
0x01: 镜像
0x02: 竖直翻转(旋转180度)
0x03: 镜像并做竖直翻转(旋转180度)

denoise

  • 读取降噪模式
./veye_mipi_i2c.sh -r -f denoise
  • 设置降噪模式
./veye_mipi_i2c.sh -w -f denoise -p1 [value]

[value]参数:

0x00: NR 2D Mode = OFF; NR 3D Mode = OFF
0x01: NR 2D Mode = OFF; NR 3D Mode = LOW
0x02: NR 2D Mode = OFF; NR 3D Mode = MIDDLE
0x03: NR 2D Mode = OFF; NR 3D Mode = HIGH
0x04: NR 2D Mode = LOW; NR 3D Mode = OFF
0x05: NR 2D Mode = LOW; NR 3D Mode = LOW
0x06: NR 2D Mode = LOW; NR 3D Mode = MIDDLE
0x07: NR 2D Mode = LOW; NR 3D Mode = HIGH
0x08: NR 2D Mode =MIDDLE; NR 3D Mode = OFF
0x09: NR 2D Mode =MIDDLE; NR 3D Mode = LOW
0x0A: NR 2D Mode = MIDDLE; NR 3D Mode = MIDDLE
0x0B: NR 2D Mode = MIDDLE; NR 3D Mode = HIGH
0x0C: NR 2D Mode =HIGH; NR 3D Mode = OFF
0x0D: NR 2D Mode =HIGH; NR 3D Mode = LOW
0x0E: NR 2D Mode = HIGH; NR 3D Mode = MIDDLE
0x0F: NR 2D Mode = HIGH; NR 3D Mode = HIGH

agc

  • 读取agc参数
./veye_mipi_i2c.sh -r -f agc
  • 设置agc (增益上限)
./veye_mipi_i2c.sh -w -f agc -p1 [value]

[value]参数:

0x00 ~ 0x0F : AGC强度

lowlight

  • 读取低照度模式参数
./veye_mipi_i2c.sh -r -f lowlight
  • 设置低照度模式

在低照度模式下,可以通过配置改参数来延长摄像头曝光时间,降低帧率,从而获得更高的低照度成像效果

./veye_mipi_i2c.sh -w -f lowlight -p1 [value]

[value]参数;

0x01: 1/2*(帧率)
0x03: 1/4*(帧率)
0x05: 1/6*(帧率)
0x07: 1/8*(帧率)
0x09: 1/10*(帧率)
0x0B: 1/15*(帧率)
0x0D: 1/20*(帧率)
0x0F: 1/25*(帧率)
0x11: 1/30*(帧率)
0x00: 固定帧率(25/30)

daynightmode

  • 读取日夜模式
./veye_mipi_i2c.sh -r -f daynightmode
  • 设置日夜模式
./veye_mipi_i2c.sh -w -f daynightmode -p1 [value]

[value]参数:

0xFF: 彩色模式,该模式下,摄像头为彩色模式,切IR-CUT 阻隔红外波段
0xFE: 黑白模式,该模式下,摄像头为彩色模式,同时IR-CUT 可以通过红外光
0xFC: 外触发模式, 该模式下,用户可以通过板载控制引脚 切换摄像头为彩色模式或者黑白模式。

ircutdir

  • 读取IR-CUT控制引脚电平方向
./veye_mipi_i2c.sh -r -f ircutdir
  • 设置IR-CUT控制电平
./veye_mipi_i2c.sh -w -f ircutdir -p1 [value]

设置IR-CUT控制电平,[value]可以是0或者1

irtrigger

  • 读取日夜切换外触发模式引脚的极性设置
./veye_mipi_i2c.sh -r -f irtrigger
  • 设置日夜切换外触发模式引脚的极性设置
./veye_mipi_i2c.sh -w -f irtrigger -p1 [value]

[value]参数:

0x00: 默认
0x01: 反转

mshutter

  • 读取曝光模式
./veye_mipi_i2c.sh -r -f mshutter
  • 设置曝光时间 (关闭自动曝光)
./veye_mipi_i2c.sh -w -f mshutter -p1 [value]

[value]的单位为s, value大于0x4B的时候摄像头进入低帧率模式

Value说明
NTSC (PAL)
0x40自动曝光
0x411/30(25)
0x421/60(50)
0x431/120(100)
0x441/240(200)
0x451/480(400)
0x461/1000
0x471/2000
0x481/5000
0x491/10000
0x4A1/50000
0x4B1/30(25)*2
0x4C1/30(25)*4
0x4D1/30(25)*6
0x4E1/30(25)*8
0x4F1/30(25)*10
0x501/30(25)*15
0x511/30(25)*20
0x521/30(25)*25
0x531/30(25)*30

cameramode

  • 读取摄像头模式
./veye_mipi_i2c.sh -r -f cameramode
  • 设置摄像头模式 需要hdver >=0x03
./veye_mipi_i2c.sh -w -f cameramode -p1 [value]

[value]参数:

0x0: stream模式
0x01: capture 模式

nodf

注: 该参数设置 丢帧数量,只在hdver ≥ 0x03, Stream 流模式下有效
这是用来控制帧率的一种方法,在输出一帧数据后,会丢弃掉nodf 帧,然后再输出下一个有效帧。
因此,在实际使用中, 实际的帧率 = 原始帧率/(1+nodf)
例如,如果原来的帧率为30fps, nodf设置为2, 最终摄像头输出的帧率为10fps.

  • 读取nodf参数
./veye_mipi_i2c.sh -r -f nodf
  • 设置nodf
./veye_mipi_i2c.sh -w -f nodf -p1 [value]

[value]参数:

nodf 的范围为 [0,0xFF], 默认为0

capture

注:该设置只在hdver ≥ 0x03, Capture 拍照模式下有效.

./veye_mipi_i2c.sh -w -f capture

这个设置用来输出下一帧图像。 这个指令用来输出最新的一帧,且不会干扰传感器。这个输出方式不同于触发模式。这个指令在输出帧数据的时候,和帧曝光之间会有一个延迟[0, 1/framerate].
这个指令适应于对实时传输性能要求不高的应用。

brightness

  • 读取亮度值
./veye_mipi_i2c.sh -r -f brightness
  • 设置亮度值
./veye_mipi_i2c.sh -w -f brightness -p1 0x32

AE的亮度值范围为[0, 0x64]

aespeed

  • 读取AE调节速度值
./veye_mipi_i2c.sh -r -f aespeed
  • 设置AE调节速度值
./veye_mipi_i2c.sh -w -f aespeed -p1 0x32 -p2 0x32

p1 为agc速度, p2问shutter速度,在[0, 0x64]由快到慢

contrast

  • 读取对比度
./veye_mipi_i2c.sh -r -f contrast
  • 设置对比度
./veye_mipi_i2c.sh -w -f contrast -p1 0x32

设置范围为[0, 0xFF], 默认为0x80

saturation

  • 读取饱和度
./veye_mipi_i2c.sh -r -f saturation
  • 设置饱和度
./veye_mipi_i2c.sh -w -f saturation -p1 0x32

饱和度的设置范围为[0, 0x64]

sharppen

  • 读取锐度值
./veye_mipi_i2c.sh -r -f sharppen
  • 设置锐度值
./veye_mipi_i2c.sh -w -f sharppen -p1 [val1] -p2 [value]

p1设置 开启锐化(0x1)和关闭锐化(0x00)
p2设置锐度值,范围为[0, 0xA]

wdrtargetbr

  • 读宽动态模式下整体亮度目标值
./veye_mipi_i2c.sh -r -f wdrtargetbr
  • 设置宽动态模式下,整体亮度值
./veye_mipi_i2c.sh -w -f wdrtargetbr -p1 0x80

使用这个指令设置宽动态亮度值会使宽动态WDR模式生效, 亮度值范围为[0, 0xFF], 默认值为0x30. 数值越大,亮度越高

wdrbtargetbr

  • 读取WDR模式下亮区亮度目标值
./veye_mipi_i2c.sh -r -f wdrbtargetbr
  • 设置WDR模式下亮区亮度目标值
./veye_mipi_i2c.sh -w -f wdrbtargetbr -p1 0x80

这个指令会使WDR模式生效,亮度值范围为[0, 0xFF],默认值为0x30, 数值越大,亮区越亮。
注:这个参数的效果于实际场景有关,会存在一个[0-X]的无效区,X和实际场景有关,不代表将亮度值调为0, 亮区会变黑。

awbgain

  • 读取白屏he的Rgain和Bgain数值
./veye_mipi_i2c.sh -r -f awbgain

wbmode

  • 读取当前的wb模式
./veye_mipi_i2c.sh -r -f wbmode
  • 设置wb模式
./veye_mipi_i2c.sh -w -f wbmode -p1 [value]

[value]参数:

0x18: 自动白平衡
0x1B:手动白平衡

mwbgain

  • 读取手动白平衡模式下的rgain和bgain
./veye_mipi_i2c.sh -r -f mwbgain
  • 设置手动白平衡模式下的rgain和bgain
./veye_mipi_i2c.sh -w -f mwbgain -p1 [rgain] -p2 [bgain]

rgain和bgain的设置范围为[0, 0xFF]


FAQ

问题:为什么bookworm系统用不了参数调整摄像头?

因为系统是64位的,需要重新编译,进入raspberrypi/i2c_cmd/source/i2c_tools/位置,执行
gcc -Wall -o i2c_read i2c_read.c strfunc.c
gcc -Wall -o i2c_write i2c_write.c strfunc.

将生成的i2c_read,i2c_write复制粘贴到raspberrypi/i2c_cmd/bin/后就能正常使用


TAG: ESP32-S3工业级6路继电器WiFi物联网RS485 Pico隔离保护IOT ESP32-S3-Zero程序 树莓派显示屏 树莓派摄像头 串口服务器 树莓派DSI bookworm 荔枝派LicheeRV Nano Super-Mini SG2002 Sipeed WIFI6以太网AI视觉RISCV ESP32开发板 X1005树莓派5 PCIE转M.2 NVME双SSD固态硬盘2230/2242/2260/2280 树莓派5以太网 树莓派5 8寸DSI MIPI显示屏LCD工业一体触摸平板电脑1280x800带摄像头 ESP32 S3开发板1.8寸AMOLED显示屏368×448触摸 加速度陀螺仪 音乐播放 麦克风 支持AI语音大模型交互 可编程手表 ESP32 S3开发板 3.5寸LCD电容触摸显示屏 480x320 高刷新 ESP32平板 MP3 视频播放 天气时钟副屏摆件 LVGL 树莓派RP2040 HM01B0 Arduino UNO R4 Luckfox Pico Pro教程 96MHz处理器 香橙派UPS Jetson Orin专用铝合金外壳 带摄像头支架迷你机箱 适用于Jetson Orin Nano和Jetson Orin NX套件 树莓派Pico