Line 1: |
Line 1: |
| [[Mv series camera appnotes 4 rpi|English]] | | [[Mv series camera appnotes 4 rpi|English]] |
| | | |
− | 本文依然在撰写中,资料随时可能更改和调整。
| + | === 概述 === |
| + | MV系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。 |
| | | |
− | === 概述 ===
| + | 本文介绍了如何在树莓派平台使用MV系列相机。 |
− | MV系列MIPI相机是为工业领域的AI应用推出的专用相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
| |
| | | |
| ==== 支持的模组 ==== | | ==== 支持的模组 ==== |
Line 14: |
Line 14: |
| |MV系列 | | |MV系列 |
| |MV-MIPI-IMX178M | | |MV-MIPI-IMX178M |
| + | |完成 |
| + | |- |
| + | |MV系列 |
| + | |MV-MIPI-SC130M |
| + | |完成 |
| + | |- |
| + | |MV系列 |
| + | |MV-MIPI-IMX287M |
| + | |完成 |
| + | |- |
| + | |MV系列 |
| + | |MV-MIPI-IMX296M |
| + | |完成 |
| + | |- |
| + | |MV系列 |
| + | |MV-MIPI-IMX265M |
| + | |完成 |
| + | |- |
| + | |MV系列 |
| + | |MV-MIPI-IMX264M |
| + | |完成 |
| + | |- |
| + | |RAW系列 |
| + | |RAW-MIPI-SC132M |
| + | |完成 |
| + | |- |
| + | |RAW系列 |
| + | |RAW-MIPI-IMX462M |
| + | |完成 |
| + | |- |
| + | |RAW系列 |
| + | |RAW-MIPI-AR0234M |
| |完成 | | |完成 |
| |} | | |} |
| === 硬件准备及安装 === | | === 硬件准备及安装 === |
− | MV系列相机需要[[ADP-MV1 Adapter Board Data Sheet/zh|ADP-MV1]]配合即可接入树莓派。下面以MV-MIPI-IMX178M为例,介绍硬件的安装方法。
| |
| | | |
− | ==== MV-MIPI-IMX178M与ADP-MV1的连接 ==== | + | ==== MV系列摄像头使用ADP-MV1的连接方式 ==== |
| + | MV系列相机需要使用ADP-MV1转接板才能连接到树莓派。 |
| + | |
| + | ===== MV系列摄像头与ADP-MV1的连接 ===== |
| 二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 | | 二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 |
− | | + | {| class="wikitable" |
− | (插入图片,注意FFC排线规格及方向)
| + | !TOP |
− | | + | !BOTTOM |
− | ==== ADP-MV1与树莓派的连接 ==== | + | |- |
− | | + | |[[File:ADP-MV1-MV-MIPI-X 01.jpg|center|thumb|600x600px|ADP-MV1 to MV-MIPI-X|alt=]] |
| + | |[[File:ADP-MV1-MV-MIPI-X 02.jpg|alt=|center|thumb|600x600px|ADP-MV1 to MV-MIPI-X]] |
| + | |} |
| ===== 供电 ===== | | ===== 供电 ===== |
| ADP-MV1需要独立的5V供电,可以使用杜邦线直接从树莓派主板取电。 | | ADP-MV1需要独立的5V供电,可以使用杜邦线直接从树莓派主板取电。 |
− | | + | [[File:ADP-MV1-MV-MIPI-X 07.jpg|center|thumb|800x800px|ADP-MV1 power supply]] |
− | (插入图片,突出5V供电杜邦线线序)
| + | <br /> |
− | | + | ===== 树莓派5 ===== |
| + | 二者使用15P转22P的FFC同面线连接,注意接触面安装方向。 |
| + | {| class="wikitable" |
| + | !TOP |
| + | !BOTTOM |
| + | |- |
| + | |[[File:ADP-MV1 to RPI5.jpg|center|thumb|600x600px|ADP-MV1 to RPI5]] |
| + | |[[File:ADP-MV1 to RPI5 2.jpg|alt=|center|thumb|600x600px|ADP-MV1 to RPI5_2]] |
| + | |}<br /> |
| ===== 树莓派Model B和Model B+ ===== | | ===== 树莓派Model B和Model B+ ===== |
| 二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。 | | 二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。 |
− | | + | [[File:MV-MIPI-X-RPI B 01.jpg|alt=MV camera and RPI connection|center|thumb|800x800px|MV camera and RPI connection]] |
− | (插入图片,注意接触面方向)
| + | <br /> |
| | | |
| ===== 树莓派Zero,Zero W和Computer Module ===== | | ===== 树莓派Zero,Zero W和Computer Module ===== |
| 二者使用15P转22P的FFC同面线连接,注意接触面安装方向。 | | 二者使用15P转22P的FFC同面线连接,注意接触面安装方向。 |
| + | [[File:MV-MIPI-X-RPI Z 01.jpg|center|thumb|800x800px|MV camera and Raspberry Pi zero connection]]<br />[[File:MV-MIPI-X-RPI IOB 03.jpg|center|thumb|800x800px|MV camera and Raspberry Pi CM4]] |
| + | <br /> |
| + | |
| + | ==== RAW系列摄像头连接到树莓派 ==== |
| + | |
| + | ===== 树莓派5 ===== |
| + | RAW-MIPI-SC132M使用15to22pin同面FFC线,其他RAW系列相机使用22pin异面FFC线。 |
| + | [[File:RAW CAM to RPI5.jpg|center|thumb|800x800px|RAW CAM to RPI5]] |
| + | <br /> |
| + | |
| + | ===== 树莓派Model B和Model B+ ===== |
| + | RAW-MIPI-SC132M使用15pin异面FFC线,其他RAW系列相机使用15to22pin同面FFC线。 |
| + | [[File:RAW-MIPI-AR0234-RPI4.jpg|center|thumb|800x800px|RAW series camera and RPI connection]] |
| | | |
− | (插入图片,注意接触面方向)
| + | ===== 树莓派Zero,Zero W和Computer Module ===== |
| + | RAW-MIPI-SC132M使用15to22pin同面FFC线,其他RAW系列相机使用22pin异面FFC线。 |
| + | [[File:RAW-MIPI-AR0234-RPI ZERO.jpg|center|thumb|800x800px|RAW-MIPI-AR0234-RPI ZERO]] |
| | | |
| === piOS的配置 === | | === piOS的配置 === |
Line 51: |
Line 110: |
| | | |
| 建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。 | | 建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。 |
− | === Legacy模式和V4L2模式介绍 === | + | === V4L2模式和Legacy模式介绍 === |
| + | 在最新的树莓派bookworm系统中,已经去掉了对Legacy模式的支持。建议客户使用V4L2模式。 |
| + | |
| + | ==== libcamera以及V4L2模式 ==== |
| + | 现在piOS已全面切换为libcamera-stack模式。 |
| + | |
| + | libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了'''V4L2模式''',而不是使用libcamera-stack。 |
| + | |
| + | 与libcamera-stack相同,我们的'''V4L2模式''',也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。 |
| | | |
| ==== Legacy模式 ==== | | ==== Legacy模式 ==== |
− | 传统模式,依赖博通的GPU进行图像处理。传统的raspicam软件集即采用此模式。此模式缺点是封闭,GPU端是闭源的,无法自由接入sensor。树莓派组织已经全面转向libcamera camera stack。
| + | 传统模式,依赖博通的GPU进行图像处理。传统的raspicam软件集即采用此模式。此模式缺点是封闭。GPU端是闭源的,无法自由接入sensor。树莓派组织已经全面转向libcamera camera stack。 |
| | | |
| 但是此模式依然有存在的价值: | | 但是此模式依然有存在的价值: |
| | | |
| # 更多的使用GPU资源,降低CPU负载。这点对于性能比较差的早期版本树莓派很有用。 | | # 更多的使用GPU资源,降低CPU负载。这点对于性能比较差的早期版本树莓派很有用。 |
− | # libcamera现在还缺乏一些功能支持。
| |
| # 可以简单直接的获取图像数据到应用层,无需驱动层的支持。这点对于不依赖树莓派做isp的相机尤其有用。 | | # 可以简单直接的获取图像数据到应用层,无需驱动层的支持。这点对于不依赖树莓派做isp的相机尤其有用。 |
| + | #libcamera现在还缺乏一些功能支持。 |
| | | |
| 有两种方法可以使用Legacy模式: | | 有两种方法可以使用Legacy模式: |
Line 67: |
Line 134: |
| # 对于bullseye版本piOS,<code>raspi-config</code>中打开Legacy Camera选项。 | | # 对于bullseye版本piOS,<code>raspi-config</code>中打开Legacy Camera选项。 |
| | | |
− | ==== libcamera以及V4L2模式 ==== | + | 由于两种工作模式不能共存,因此使用V4L2模式时需要关闭Legacy模式。 |
− | 现在piOS已全面切换为libcamera-stack模式。这个模式有很多的优点,在树莓派网站上有详细的[https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-and-the-legacy-raspicam-camera-stack 介绍]。
| + | |
| + | === 配置命令行全局变量 === |
| + | 为了后面描述方便,此处根据sensor尺寸,配置全局变量。 |
| + | |
| + | *MV-MIPI-IMX178M |
| + | |
| + | <code>export WIDTH=3088</code> |
| + | |
| + | <code>export HEIGHT=2064</code> |
| + | |
| + | <code>export FPS=22</code> |
| + | |
| + | *MV-MIPI-SC130M |
| + | |
| + | <code>export WIDTH=1280</code> |
| + | |
| + | <code>export HEIGHT=1024</code> |
| + | |
| + | <code>export FPS=108</code> |
| + | |
| + | * MV-MIPI-IMX296M |
| + | |
| + | <code>export WIDTH=1440</code> |
| + | |
| + | <code>export HEIGHT=1088</code> |
| + | |
| + | <code>export FPS=60</code> |
| + | |
| + | *MV-MIPI-IMX287M |
| + | |
| + | <code>export WIDTH=704</code> |
| + | |
| + | <code>export HEIGHT=544</code> |
| + | |
| + | <code>export FPS=319</code> |
| + | |
| + | *MV-MIPI-IMX265M |
| + | |
| + | <code>export WIDTH=2048</code> |
| + | |
| + | <code>export HEIGHT=1544</code> |
| + | |
| + | <code>export FPS=45</code> |
| + | |
| + | *MV-MIPI-IMX264M |
| + | |
| + | <code>export WIDTH=2432</code> |
| + | |
| + | <code>export HEIGHT=2056</code> |
| + | |
| + | <code>export FPS=28</code> |
| + | |
| + | *RAW-MIPI-SC132M |
| + | |
| + | <code>export WIDTH=1024</code> |
| + | |
| + | <code>export HEIGHT=1280</code> |
| + | |
| + | <code>export FPS=120</code> |
| + | |
| + | *RAW-MIPI-IMX462M |
| + | |
| + | <code>export WIDTH=1920</code> |
| + | |
| + | <code>export HEIGHT=1088</code> |
| + | |
| + | <code>export FPS=60</code> |
| + | |
| + | *RAW-MIPI-AR0234M |
| + | |
| + | <code>export WIDTH=1920</code> |
| + | |
| + | <code>export HEIGHT=1200</code> |
| + | |
| + | <code>export FPS=60</code> |
| + | === V4L2模式用法 === |
| + | 我们在这个[https://github.com/veyeimaging/raspberrypi_v4l2 github仓库]保存了v4l2模式的代码。 |
| + | |
| + | ====下载驱动包==== |
| + | <code>wget <nowiki>https://github.com/veyeimaging/raspberrypi_v4l2/releases/latest/download/raspberrypi_v4l2.tgz</nowiki></code><code><nowiki/></code> |
| + | ====安装驱动==== |
| + | <code>tar -xzvf raspberrypi_v4l2.tgz</code> |
| + | |
| + | <code>cd raspberrypi_v4l2/release/</code> |
| + | |
| + | <code>chmod +x *</code> |
| + | |
| + | * 对于树莓派5 |
| + | |
| + | <code>sudo ./install_driver_rpi5.sh veye_mvcam</code> |
| + | |
| + | 会在/boot/config.txt中安装CAM1和CAM0两个dtvoerlay。 |
| + | |
| + | * 其他树莓派 |
| + | |
| + | <code>sudo ./install_driver.sh veye_mvcam</code> |
| + | |
| + | 然后重启树莓派。 |
| + | |
| + | 备注:如果提示无法找到对应版本的驱动,说明我们没有提供对应您的piOS版本编译后的驱动程序。请尝试从源码编译。 |
| + | ====卸载驱动==== |
| + | 如需更换为Legacy模式,或者想要更换成其他摄像头模组型号的驱动,必须要先卸载现在的驱动。 |
| + | |
| + | <code>sudo ./uninstall_driver.sh veye_mvcam</code> |
| + | ====系统状态验证==== |
| + | 以MV-MIPI-IMX178M为例: |
| + | |
| + | <code>dmesg | grep mvcam</code> |
| + | |
| + | 可以看到linux启动阶段probe到的相机型号和以及相机的版本号: |
| + | |
| + | <code>camera is: MV-MIPI-IMX178M</code> |
| + | |
| + | <code>firmware version: 0x1080102</code> |
| + | |
| + | 并且/dev/video0 节点存在,证明摄像头状态正常。 |
| + | |
| + | ==== 树莓派5的配置 ==== |
| + | 在树莓派5上,驱动程序现在使用media control API,我们必须先正确设置media graph。这包括正确设置media pad的格式并正确链接它们。 |
| + | |
| + | 我们提供了一系列脚本实现这个功能,保存在rpi5_scripts目录。 |
| + | |
| + | * ./find_entity.sh |
| + | |
| + | <code>$ ./find_entity.sh</code> |
| + | |
| + | <code>Found mvcam @ i2c-4 entity on /dev/media3</code> |
| + | |
| + | <code>Plese get frame from /dev/video0 and use /dev/v4l-subdev2 for camera setting.</code> |
| + | |
| + | <code>Found mvcam @ i2c-6 entity on /dev/media0</code> |
| + | |
| + | <code>Plese get frame from /dev/video8 and use /dev/v4l-subdev5 for camera setting.</code> |
| + | |
| + | 树莓派5重启之后,相机的media node,video node可能发生变化,因此,建议执行后续操作前执行<code>./find_entity.sh</code>以明确设备节点。 |
| + | |
| + | 上述提示信息中,可以看到系统插入了两个相机,以及每个相机的对应的设备节点。 |
| + | |
| + | <code>i2c-4</code>对应板子上的CAM1插口,<code>i2c-6</code>对应板子上的CAM0插口。 |
| + | |
| + | * media_setting_rpi5.sh |
| + | |
| + | <code>./media_setting_rpi5.sh</code> |
| + | |
| + | <code>Usage: ./media_setting_rpi5.sh veyecam2m/csimx307/cssc132/mvcam -fmt [UYVY/RAW8/RAW10/RAW12] -w [width] -h [height]</code> |
| + | |
| + | <code>This shell script is designed to detect the connection of a camera on Raspberry Pi 5.</code> |
| + | |
| + | <code> It utilizes media-ctl and v4l2-ctl commands to configure the linking relationships and data formats of the media pad.</code> |
| + | |
| + | <code> Once completed, you can directly use /dev/video0 or /dev/video8 to obtain image data</code> |
| + | |
| + | 在进行后续操作前,必须执行此脚本以完成参数的配置。 |
| + | |
| + | 举例来说,对于RAW-MIPI-AR0234M: |
| + | |
| + | <code>./media_setting_rpi5.sh mvcam -fmt RAW8 -w 1920 -h 1200</code> |
| + | |
| + | ====v4l2-ctl 应用范例==== |
| + | =====安装v4l2-utils===== |
| + | <code>sudo apt-get install v4l-utils</code> |
| + | =====yavta安装===== |
| + | <code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code> |
| + | |
| + | <code>cd yavta;make</code> |
| + | ===== 使用v4l2-ctl配置参数 ===== |
| + | |
| + | ====== 列出相机支持的数据格式 ====== |
| + | <code>v4l2-ctl --list-formats-ext</code> |
| + | |
| + | <small><code>ioctl: VIDIOC_ENUM_FMT</code></small> |
| + | |
| + | <small><code> Type: Video Capture</code></small> |
| + | |
| + | <small><code> [0]: 'GREY' (8-bit Greyscale)</code></small> |
| + | |
| + | <small><code> Size: Discrete 3088x2064</code></small> |
| + | |
| + | <small><code> [1]: 'Y10P' (10-bit Greyscale (MIPI Packed))</code></small> |
| + | |
| + | <small><code> Size: Discrete 3088x2064</code></small> |
| + | |
| + | <small><code> [2]: 'Y10 ' (10-bit Greyscale)</code></small> |
| + | |
| + | <small><code> Size: Discrete 3088x2064</code></small> |
| + | |
| + | <small><code> [3]: 'Y12P' (12-bit Greyscale (MIPI Packed))</code></small> |
| + | |
| + | <small><code> Size: Discrete 3088x2064</code></small> |
| + | |
| + | <small><code> [4]: 'Y12 ' (12-bit Greyscale)</code></small> |
| + | |
| + | <small><code> Size: Discrete 3088x2064</code></small> |
| + | |
| + | 注:对于树莓派5,实际支持的图像格式取决于相机能力,而不是此处的列表。 |
| + | |
| + | ====== 列出驱动中实现的相机的可配置参数 ====== |
| + | <code>v4l2-ctl -L</code> |
| + | |
| + | <code>User Controls</code> |
| + | |
| + | <code> trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write</code> |
| + | |
| + | <code> frame_rate 0x00981904 (int) : min=1 max=60 step=1 default=30 value=30 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> roi_x 0x00981905 (int) : min=0 max=1376 step=8 default=0 value=0</code> |
| + | |
| + | <code> roi_y 0x00981906 (int) : min=0 max=1024 step=4 default=0 value=0</code> |
| + | |
| + | * |
| + | |
| + | 可以使用下面的方法设置和获取参数。 |
| + | |
| + | <code>v4l2-ctl --set-ctrl [ctrl_type]=[val]</code> |
| + | |
| + | <code>v4l2-ctl --get-ctrl [ctrl_type]</code> |
| + | |
| + | |
| + | 注:对于树莓派5,本节的所有使用v4l2-ctl配置参数的命令需要增加 -d参数来指明配置参数使用的subdev。 |
| + | |
| + | 比如执行./media_setting_rpi5.sh或者./find_entity.sh的时候提示使用/dev/v4l-subdev2进行参数配置。 |
| + | |
| + | 则<code>v4l2-ctl -L</code>需要变更为<code>v4l2-ctl -L -d /dev/v4l-subdev2</code>。 |
| + | |
| + | |
| + | 注:以上所有功能,均可使用[[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]实现。 |
| + | |
| + | 需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明: |
| + | |
| + | ====== 配置触发模式 ====== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_mode=[0-2]</small></code> |
| + | |
| + | 0:流模式 |
| + | |
| + | 1:普通触发模式 |
| + | |
| + | 2:快速连续触发模式 |
| + | |
| + | ====== 配置触发源 ====== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_src=[0-1]</small></code> |
| + | |
| + | 0: 软触发 |
| + | |
| + | 1: 硬触发 |
| + | |
| + | ====== 软触发一次 ====== |
| + | <code>v4l2-ctl --set-ctrl <small>soft_trgone=1</small></code> |
| + | |
| + | ====== 设置帧率 ====== |
| + | <code>v4l2-ctl --set-ctrl frame_rate=[1-max]</code> |
| + | |
| + | 随分辨率的调整,最大帧率会自动更新。 |
| + | |
| + | ====== 设置ROI ====== |
| + | |
| + | * 方法1,使用selection |
| + | |
| + | <code>v4l2-ctl --set-selection=target=crop,top=0,left=0,width=$WIDTH,height=$HEIGHT</code> |
| + | |
| + | 设置roi后,最大帧率会自动调整。 |
| + | |
| + | 注:此方法不适用于树莓派5。 |
| + | |
| + | * 方法2,使用自定义roi_x,roi_y配合<code>--set-fmt-video</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_y=0</code> |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT</code> |
| + | ==== 流模式 ==== |
| + | |
| + | ===== 设置ROI ===== |
| + | <code>v4l2-ctl --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_y=0</code> |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT</code> |
| + | |
| + | ===== 设置帧率 ===== |
| + | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> |
| + | |
| + | ===== 可使用如下命令进行帧率统计 ===== |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> |
| + | |
| + | ===== 保存图片到文件 ===== |
| + | ======MV-MIPI-IMX178M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-3104x2064.raw</code> |
| + | |
| + | 或者 |
| + | |
| + | <code>./yavta -c1 -Fy8-3104x2064.raw --skip 0 -f Y8 -s 3088x2064 /dev/video0</code> |
| + | |
| + | 由于Raspberry Pi为图像申请的内存,宽度为32对齐,高度为16对齐,所以3088*2064的图像将被保存为3104*2064大小。 |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-3088x2064.raw</code> |
| + | |
| + | *raw12格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-3088x2064.raw</code> |
| + | ======MV-MIPI-SC130M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1280x1024.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=1024,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-1280x1024.raw</code> |
| + | ======MV-MIPI-IMX296M ====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1440x1088.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-1440x1088.raw</code> |
| + | ======MV-MIPI-IMX265M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2048x1544.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-2048x1544.raw</code> |
| + | |
| + | *raw12格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-2048x1544.raw</code> |
| + | ======MV-MIPI-IMX264M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2432x2056.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-2432x2056.raw</code> |
| + | |
| + | *raw12格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-2432x2056.raw</code> |
| + | ======RAW-MIPI-SC132M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1024,height=1280,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1024x1280.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1024,height=1280,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-1024x1280.raw</code> |
| + | ======MV-MIPI-IMX287M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-704x544.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-704x544.raw</code> |
| + | |
| + | *raw12格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-704x544.raw</code> |
| + | ======RAW-MIPI-IMX462M====== |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-1920x1088.raw</code> |
| + | |
| + | *raw12格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-1920x1088.raw</code> |
| + | ======RAW-MIPI-AR0234M====== |
| + | |
| + | *raw8格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1200,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1920x1200.raw</code> |
| + | |
| + | *raw10格式 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1200,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-1920x1200.raw</code> |
| + | |
| + | 图片格式请参考下面:raw data图片格式说明 章节。 |
| + | |
| + | ===== 实时预览 ===== |
| + | 在树莓派5上,vlc进行播放现在有问题,不能使用。 |
| + | |
| + | ====== 使用vlc播放图像 ====== |
| + | 1. Open VLC with command line <code>vlc</code> , or click the icon to launch. |
| + | |
| + | 2. Hit the <code>▶</code>(Play) button to call the open media window. |
| + | |
| + | 3. In <code>Capture Device</code> >> <code>Device Selection</code> >> <code>Video device name</code>, select the camera video node. |
| + | |
| + | 4. Hit <code>Advanced Options...</code> button |
| + | |
| + | 5. Type in the <code>width</code> and <code>height</code>, for example, 1280 and 1024. |
| + | |
| + | 6. Hit <code>OK</code> to save the settings and see the video feed. |
| + | [[File:Mvcam via VLC.png|center|thumb|800x800px|Play mv camera using VLC on RPI]] |
| + | |
| + | ====== 使用qv4l2播放图像 ====== |
| + | 首先安装qv4l2 |
| | | |
− | libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了'''V4L2模式''',而不是使用libcamera-stack。
| + | <code>sudo apt install qv4l2</code> |
| | | |
− | 与libcamera-stack相同,我们的'''V4L2模式''',也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。
| + | 1. Open VLC with command line <code>vlc</code> to launch. |
| | | |
− | === Legacy模式用法 ===
| + | 2. Hit the <code>▶</code>(Play) button to call the open media window. |
| + | [[File:Mvcam via qv4l2.png|center|thumb|800x800px|Play mv camera using qv4l2 on RPI]] |
| <br /> | | <br /> |
| + | ====== 使用gstreamer预览UYVY格式图像 ====== |
| + | <code>export DISPLAY=:0</code> |
| + | |
| + | 为了方便进行安装和调试,MV系列相机提供了UYVY模式。UYVY模式支持的最大宽度为2880,使用如下命令可以进行实时预览。 |
| + | |
| + | 注:为了提高最高帧率和带宽,部分模组升级固件后不再提供UYVY格式。具体请通过脚本的fmtcap指令读取寄存器确认。 |
| + | |
| + | * install gstreamer |
| + | |
| + | <code>sudo apt-get install gstreamer1.0-tools</code> |
| + | |
| + | <code>sudo apt-get install libx264-dev libjpeg-dev</code> |
| + | |
| + | <code>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</code> |
| + | |
| + | * MV-MIPI-IMX178M |
| + | |
| + | <code>v4l2-ctl --set-selection=target=crop,top=0,left=0,width=2816,height=2064</code> |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)2816, height=(int)2064, framerate=(fraction)22/1" ! v4l2convert ! "video/x-raw,format=(string)NV12" ! autovideosink sync=false -v</code> |
| + | |
| + | * MV-MIPI-SC130M, MV-MIPI-IMX296M, MV-MIPI-IMX265M,MV-MIPI-IMX264M,MV-MIPI-IMX287M |
| + | |
| + | <code>v4l2-ctl --set-selection=target=crop,top=0,left=0,width=$WIDTH,height=$HEIGHT</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)$WIDTH, height=(int)$HEIGHT,framerate=(fraction)$FPS/1" ! v4l2convert ! "video/x-raw,format=(string)NV12" ! autovideosink sync=false -v</code> |
| + | |
| + | 或者简单的 |
| + | |
| + | <code>gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink</code> |
| + | |
| + | ====== 使用opencv预览GREY格式图像 ====== |
| + | |
| + | * install opencv |
| + | |
| + | <code>pip uninstall opencv-python</code> |
| + | |
| + | <code>sudo apt install python3-opencv</code> |
| + | |
| + | * 我们提供了一个简单的[https://github.com/veyeimaging/raspberrypi_v4l2/tree/main/samples/opencv/raw_camera sample]实现此功能: |
| + | |
| + | <code>python ./v4l2dev_2_opencv_show_grey.py --width 640 --height 480 --fps 30</code> |
| + | |
| + | 对于树莓派5,需要增加一个<code>--ctldev /dev/v4l-subdev*</code>参数用于指明配置参数的subdev。 |
| + | |
| + | ==== 触发模式 ==== |
| + | 本节以IMX178为例,讲述一下触发模式的配置和使用。其他摄像头,参考流模式的宽高推论即可。 |
| + | |
| + | ===== 设置ROI和帧率 ===== |
| + | <code>v4l2-ctl --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_y=0</code> |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> |
| + | ===== 软触发模式 ===== |
| + | |
| + | ====== 设置模式 ====== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_mode=1</small></code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_src=0</small></code> |
| + | |
| + | ====== 开始取图 ====== |
| + | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=5 --stream-to=y8-3104x2064.yuv</code> |
| + | |
| + | ====== 进行软触发操作 ====== |
| + | 在其他的shell终端,可以多次执行下面命令进行多次触发。 |
| + | |
| + | <code>v4l2-ctl --set-ctrl <small>soft_trgone=1</small></code> |
| + | |
| + | ===== 硬触发模式 ===== |
| + | 下面以使用树莓派GPIO21为模拟触发源,上升沿触发为例。 |
| + | |
| + | 可以使用[[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]脚本进行丰富的触发参数设置。 |
| | | |
− | === V4L2模式用法 === | + | ====== 硬件连接 ====== |
| + | [[File:MV-MIPI-X-RPI B TRIG 01.jpg|center|thumb|800x800px|MV camera hardware trigger connection]] |
| <br /> | | <br /> |
− | === 参数配置方法 === | + | |
| + | ====== 设置模式 ====== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_mode=1</small></code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_src=1</small></code> |
| + | |
| + | ====== 开始取图 ====== |
| + | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=5 --stream-to=y8-3104x2064.raw</code> |
| + | |
| + | ====== 进行硬触发操作 ====== |
| + | 在其他的shell终端,可以多次执行下面命令进行多次触发。 |
| + | |
| + | <code>python gpio_trigger.py</code> |
| + | |
| + | Note:触发脚本[https://github.com/veyeimaging/mvcam_raspberrypi/tree/main/mv_tools_rpi 链接]。 |
| + | ====CM4的补充说明==== |
| + | cm4支持两路摄像头同时使用,采用上面的步骤安装的dtbo将只能使用CAM1。如需使用两路摄像头,请按如下步骤: |
| + | |
| + | ===== 硬件连接 ===== |
| + | 参考树莓派这个[https://www.raspberrypi.com/documentation/computers/compute-module.html 说明],将J6进行短接。 |
| + | =====更新dt-blob.bin===== |
| + | <code>sudo wget <nowiki>https://datasheets.raspberrypi.com/cmio/dt-blob-dualcam.bin</nowiki> -O /boot/dt-blob.bin</code> |
| + | =====对于Buster系统(kernel5.10)===== |
| + | 更新双摄像头的dtbo, |
| + | |
| + | 以mvcam为例: |
| + | |
| + | <code>sudo cp raspberrypi_v4l2/release/driver_bin/$(uname -r)/veye_mvcam-cm4.dtbo /boot/overlays/veye_mvcam.dtbo</code> |
| + | |
| + | <code>sudo reboot</code> |
| + | =====对于Bullseye系统(kernel5.15+)===== |
| + | 手动编辑<code>/boot/config.txt</code>文件,增加一行<code>dtoverlay=[camera],cam0</code>,如下所示: |
| + | |
| + | <code>[all]</code> |
| + | |
| + | <code>dtparam=i2c_vc=on</code> |
| + | |
| + | <code>dtoverlay=veye_mvcam</code> |
| + | |
| + | <code>dtoverlay=veye_mvcam,cam0</code> |
| + | =====设备文件说明===== |
| + | CM4模块采用两路I2C分别与两个摄像头通信。 |
| + | {| class="wikitable" |
| + | !description |
| + | !i2c bus num |
| + | !lane num |
| + | !video node |
| + | |- |
| + | |CAM0 |
| + | |0 |
| + | |2lane |
| + | |video0 |
| + | |- |
| + | |CAM1 |
| + | |10 |
| + | |2lane or 4lane |
| + | |video2(Buster),video1(Bullseye) |
| + | |}注:只连一个摄像头,无论CAM0还是CAM1,都是video0。 |
| + | ====从源代码编译驱动方法==== |
| + | 请参考:[[Build drivers from source for rpi/zh|树莓派平台上摄像头驱动源码编译指南]]。 |
| + | === Legacy模式用法 === |
| + | |
| + | 我们在这个[https://github.com/veyeimaging/mvcam_raspberrypi github仓库]中存储legacy模式的代码。 |
| + | |
| + | ==== 下载软件包 ==== |
| + | <code>git clone <nowiki>https://github.com/veyeimaging/mvcam_raspberrypi.git</nowiki></code> |
| + | |
| + | 增加可执行权限 |
| + | |
| + | <code>chmod +x -R ./mvcam_raspberrypi/</code> |
| + | |
| + | ==== 软件包主要内容介绍 ==== |
| + | camera_i2c_config:自动识别不同的树莓派板型,并控制power on 引脚给摄像机供电。 |
| + | |
| + | mv_raspicam:实现图像预览、图片保存等功能。 |
| + | |
| + | mv_mipi_i2c.sh:通过i2c协议读取和设置相机参数的脚本。 |
| + | |
| + | veye_i2c_upgrade:相机固件升级工具。 |
| + | |
| + | ==== 相机上电 ==== |
| + | <code>./camera_i2c_config</code> |
| + | |
| + | 相机上电后,可以执行: |
| + | |
| + | <code>i2cdetect -y 10</code> |
| + | |
| + | 出现0x3b的设备,则表明相机已启动,并且i2c通道正常工作。 |
| + | |
| + | ==== 视频预览 ==== |
| + | <code>./mv_raspicam -t -1 -roi 0,0,3088,2064 -md 0</code> |
| + | |
| + | 其中 -md指明像素数据格式: |
| + | {| class="wikitable" |
| + | !-md option |
| + | !data type |
| + | |- |
| + | |0 |
| + | |8bit Y |
| + | |- |
| + | |1 |
| + | |10bit Y |
| + | |- |
| + | |2 |
| + | |12bit Y |
| + | |} |
| + | -roi可以指明需要的roi尺寸。 |
| + | |
| + | 对于宽度超过1920的尺寸,<code>mv_raspicam</code> 会先将图像缩小一倍,然后进行预览显示。 |
| + | |
| + | ==== 保存图片 ==== |
| + | <code>./mv_raspicam -t 1000 -roi 0,0,3088,2064 -md 0 -sr 10 -o /dev/shm/y8-3104x2064_%04d.raw</code> |
| + | |
| + | -sr是存储图片的间隔,这里每间隔10张图片保存一张。 |
| + | |
| + | -t 1000,单位是ms,这里表示1秒。 |
| + | |
| + | 完成后在<code>/dev/shm/</code>目录下会保存下几个文件。 |
| + | |
| + | ==== 触发模式 ==== |
| + | 本章节需要使用mv_mipi_i2c.sh,请参考下面相关[[Mv series camera appnotes 4 rpi/zh#i2c.E5.8F.82.E6.95.B0.E9.85.8D.E7.BD.AE.E6.96.B9.E6.B3.95|i2c参数配置方法章节]]。 |
| + | |
| + | ===== 软触发 ===== |
| + | |
| + | ====== 设置模式 ====== |
| + | <code>./mv_mipi_i2c.sh -w -f trgmode -p1 1</code> |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgsrc -p1 0</code> |
| + | |
| + | ====== 设置触发属性 ====== |
| + | 可以设置触发数量,触发间隔等。下面设置单次触发5张,每张间隔1毫秒。 |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgnum -p1 5</code> |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trginterval -p1 1000</code> |
| + | |
| + | ====== 开始取图 ====== |
| + | <code>./mv_raspicam -t -1 -roi 0,0,3088,2064 -md 0</code> |
| + | |
| + | ====== 进行软触发操作 ====== |
| + | 在其他的shell终端,可以多次执行下面命令进行多次触发。 |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgone</code> |
| + | |
| + | ===== 硬触发 ===== |
| + | [[File:MV-MIPI-X-RPI B TRIG 01.jpg|center|thumb|800x800px|MV camera hardware trigger connection|link=http://wiki.veye.cc/index.php/File:MV-MIPI-X-RPI_B_TRIG_01.jpg]] |
| + | ====== 设置模式 ====== |
| + | 本次以高速连续触发为例 |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgmode -p1 2</code> |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgsrc -p1 1</code> |
| + | |
| + | ====== 设置触发属性 ====== |
| + | 高速连续触发下,触发间隔无效。这次触发2张。 |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgnum -p1 2</code> |
| + | |
| + | 设置上升沿触发 |
| + | |
| + | <code>./mv_mipi_i2c.sh -w -f trgedge -p1 0</code> |
| + | |
| + | 此外,还可以对硬触发设置丰富的触发属性,如触发延迟、信号过滤等。 |
| + | |
| + | ====== 开始取图 ====== |
| + | <code>./mv_raspicam -t -1 -roi 0,0,3088,2064 -md 0</code> |
| + | |
| + | ====== 进行硬触发操作 ====== |
| + | <code>python gpio_trigger.py</code> |
| + | |
| + | Note:触发脚本[https://github.com/veyeimaging/mvcam_raspberrypi/tree/main/mv_tools_rpi 链接]。 |
| + | ====CM4的补充说明==== |
| + | 关于硬件连接、dtbo以及i2cbus的描述,请参考前面的章节。 |
| + | |
| + | ===== mv_raspicam分别访问两个camera的方法: ===== |
| + | |
| + | * 预览CAM0 |
| + | |
| + | <code>./mv_raspicam -t -1 -c 0 -y 0</code> |
| + | |
| + | * 预览CAM1 |
| + | |
| + | <code>./mv_raspicam -t -1 -c 1 -y 10</code> |
| + | |
| + | === raw data图片格式说明 === |
| + | |
| + | ==== 具有填充位的图片格式 ==== |
| + | 对于10bit深度、12bit深度的像素数据,总是使用两个字节来存储一个像素。用不到的高位以0填充。V4L2标准的'Y10 ' (10-bit Greyscale),'Y12 ' (12-bit Greyscale)格式都是以这种方式存储的。 |
| + | |
| + | 这种存储方式方便软件处理,缺点是空间占用较大。 |
| + | |
| + | ==== 紧密排列的图片格式 ==== |
| + | mv_raspicam保存的数据格式就是mipi总线上的数据格式,像素和像素之间不会进行空bit位填充。 |
| + | |
| + | V4L2标准的'Y10P' (10-bit Greyscale (MIPI Packed)),'Y12P' (12-bit Greyscale (MIPI Packed))格式都是以这种方式存储的。 |
| + | [[File:Packed raw data layer.png|center|thumb|1200x1200px|Packed raw data layer]] |
| <br /> | | <br /> |
| + | ===== 紧密排列图片大小 ===== |
| + | Buffersize= ALIGN_UP(width*bit_depth/8,32)*ALIGN_UP(height,16) |
| + | |
| + | 行buffersize需要是32字节的整数倍;列buffersize是16字节的整数倍。 |
| + | |
| + | 举例来说,3088*2064@8bit的图像大小是6406656; 3088*2064@10bit的图像大小是7991808;3088*2064@12bit 的图像大小是9576960。 |
| + | |
| + | ==== 转换工具 ==== |
| + | 我们编写了一个小工具:[https://github.com/veyeimaging/pixel_layer_convert pixel_layer_convert],可以很方便的将紧密排列的图片转为具有填充位的图片。 |
| + | |
| + | 比如下面的命令,可以将一个3088宽度的packed raw10 图片转为unpacked raw10。 |
| + | |
| + | <code>./pixel_layer_convert -I Y10P -i y10-3088x2064_0001.raw -o y10-3088x2064_0001_new.raw -w 3088</code> |
| + | |
| + | ==== raw图片播放器 ==== |
| + | 推荐使用[https://www.offminor.de/ vooya]作为播放器,支持GREY, 和具有填充位的图片格式。 |
| + | |
| + | Y8文件可以用这个播放器: [https://yuv-player-deluxe.software.informer.com/2.6/ YUV Displayer Deluxe]。 |
| + | |
| + | === shell脚本进行参数配置 === |
| + | 我们提供了shell脚本来配置参数。 |
| | | |
| + | https://github.com/veyeimaging/raspberrypi_v4l2/tree/main/mv_tools_rpi |
| + | |
| + | [[mv_mipi_i2c.sh user guide]] |
| === 参考资料 === | | === 参考资料 === |
| | | |
Line 94: |
Line 873: |
| === 本文修改记录 === | | === 本文修改记录 === |
| | | |
− | * 2022-04-12 | + | * 2024-01-01 |
| + | |
| + | 增加对树莓派5的相关说明。 |
| + | |
| + | *2023-08-16 |
| + | |
| + | 增加对RAW-MIPI-IMX462M和RAW-MIPI-AR0234M的支持。 |
| + | |
| + | * 2023-06-07 |
| + | |
| + | 增加使用qv4l2和VLC预览画面的方法。 |
| + | |
| + | * 2023-04-14 |
| + | |
| + | 配合新版本驱动,去掉了翻转操作,增加了一种roi配置方法。 |
| + | |
| + | * 20230329 |
| + | |
| + | 增加opencv sample。 |
| + | |
| + | *20230326 |
| + | |
| + | 增加MV-MIPI-IMX287M的支持。 |
| + | |
| + | *20230304 |
| + | |
| + | 增加Bullseye系统中CM4的相关说明。 |
| + | |
| + | * 20230210 |
| + | |
| + | V4L2模式下增加了CM4的说明。 |
| + | |
| + | *20221208 |
| + | |
| + | 增加了MV-MIPI-IMX264M的支持。 |
| + | |
| + | * 20221102 |
| + | |
| + | 增加了IMX265和SC132新型号的支持。 |
| + | |
| + | * 2022-05-16 |
| + | |
| + | 提供了图片格式转换工具。 |
| + | |
| + | * 2022-04-14 |
| | | |
| 第一个版本 | | 第一个版本 |