Difference between revisions of "Mv series camera appnotes 4 jetson/zh"
(82 intermediate revisions by 3 users not shown) | |||
Line 14: | Line 14: | ||
|MV系列 | |MV系列 | ||
|MV-MIPI-IMX178M | |MV-MIPI-IMX178M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-SC130M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX296M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX287M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX265M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX264M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-SC132M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-AR0234M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-IMX462M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-SC535M | ||
|完成 | |完成 | ||
|} | |} | ||
+ | 此外,已经调通V-by-One HS连接模式的驱动。 | ||
==== 支持的Jetson Board ==== | ==== 支持的Jetson Board ==== | ||
Line 38: | Line 75: | ||
|- | |- | ||
|TX2 Devkit | |TX2 Devkit | ||
− | | | + | |完成 |
|- | |- | ||
|AGX Xavier | |AGX Xavier | ||
− | | | + | |完成 |
+ | |- | ||
+ | |AGX Orin | ||
+ | |完成 | ||
+ | |- | ||
+ | |Orin NX | ||
+ | |完成 | ||
|- | |- | ||
− | | | + | |Orin Nano |
− | | | + | |完成 |
|} | |} | ||
Line 50: | Line 93: | ||
* Jetpack4.6.1,L4T版本r32.7.1 | * Jetpack4.6.1,L4T版本r32.7.1 | ||
+ | *Jetpack4.6.3,L4T版本r32.7.3 | ||
+ | *Jetpack4.6.4,L4T版本r32.7.4 | ||
+ | *Jetpack5.0.2,L4T版本r35.1 | ||
+ | *Jetpack5.1,L4T版本r35.2.1 | ||
+ | *Jetpack5.1.1,L4T版本r35.3.1 | ||
+ | *Jetpack5.1.2,L4T版本r35.4.1 | ||
+ | *Jetpack5.1.3,L4T版本r35.5 | ||
+ | *Jetpack6.0,L4T版本r36.3 | ||
+ | *Jetpack6.1,L4T版本r36.4 | ||
=====怎样查看当前L4T版本===== | =====怎样查看当前L4T版本===== | ||
Line 64: | Line 116: | ||
MV系列相机需要转接板才可以接入Jetson平台。支持情况如下表: | MV系列相机需要转接板才可以接入Jetson平台。支持情况如下表: | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | !Camera型号 | ||
!Jetson型号 | !Jetson型号 | ||
! 转接板 | ! 转接板 | ||
+ | !FFC线(to 转接板) | ||
+ | !FFC线(to Jetson主板) | ||
!摄像机数量 | !摄像机数量 | ||
− | ! | + | !额外供电 |
|- | |- | ||
+ | | rowspan="10" |MV系列 | ||
|Nano A02 | |Nano A02 | ||
|ADP-MV1 | |ADP-MV1 | ||
+ | |30pin异面FFC | ||
+ | |15pin异面FFC | ||
|1 | |1 | ||
|5V DC(必须) | |5V DC(必须) | ||
Line 76: | Line 134: | ||
|Nano B01 | |Nano B01 | ||
|ADP-MV1 | |ADP-MV1 | ||
− | | | + | |30pin异面FFC |
+ | |15pin异面FFC | ||
+ | |2 | ||
|5V DC(必须) | |5V DC(必须) | ||
|- | |- | ||
|Nano 2GB | |Nano 2GB | ||
|ADP-MV1 | |ADP-MV1 | ||
− | | | + | |30pin异面FFC |
+ | |15pin异面FFC | ||
+ | |1 | ||
|5V DC(必须) | |5V DC(必须) | ||
|- | |- | ||
|TX2 NX | |TX2 NX | ||
|ADP-MV1 | |ADP-MV1 | ||
+ | |30pin异面FFC | ||
+ | |15pin异面FFC | ||
|2 | |2 | ||
|5V DC(必须) | |5V DC(必须) | ||
Line 91: | Line 155: | ||
|XAVIER NX | |XAVIER NX | ||
|ADP-MV1 | |ADP-MV1 | ||
+ | |30pin异面FFC | ||
+ | |15pin异面FFC | ||
+ | |2 | ||
+ | |5V DC(必须) | ||
+ | |- | ||
+ | |Orin Nano | ||
+ | |ADP-MV1 | ||
+ | |30pin异面FFC | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |5V DC(必须) | ||
+ | |- | ||
+ | |Orin NX | ||
+ | |ADP-MV1 | ||
+ | |30pin异面FFC | ||
+ | |15to22 pin 同面FFC | ||
|2 | |2 | ||
|5V DC(必须) | |5V DC(必须) | ||
Line 96: | Line 176: | ||
|TX2 Devkit | |TX2 Devkit | ||
|ADP-N4 | |ADP-N4 | ||
+ | |30pin异面FFC | ||
+ | |B2B连接器 | ||
|6 | |6 | ||
− | | | + | |5V或12V DC (必须) |
|- | |- | ||
|AGX Xavier | |AGX Xavier | ||
|ADP-N4 | |ADP-N4 | ||
+ | |30pin异面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |5V或12V DC (必须) | ||
+ | |- | ||
+ | |AGX Orin | ||
+ | |ADP-N4 | ||
+ | |30pin异面FFC | ||
+ | |B2B连接器 | ||
|6 | |6 | ||
− | | | + | |5V或12V DC (必须) |
+ | |- | ||
+ | | rowspan="10" |RAW-MIPI-SC132M | ||
+ | |Nano A02 | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15pin异面FFC | ||
+ | |1 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Nano B01 | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15pin异面FFC | ||
+ | |2 | ||
+ | |N/A | ||
|- | |- | ||
− | | | + | |Nano 2GB |
− | | | + | |N/A |
− | | | + | |N/A |
− | | | + | |15pin异面FFC |
− | | | + | |1 |
+ | |N/A | ||
+ | |- | ||
+ | |TX2 NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15pin异面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |XAVIER NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15pin异面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Orin Nano | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Orin NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |TX2 Devkit | ||
+ | |ADP-N5 | ||
+ | |15pin异面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |- | ||
+ | |AGX Xavier | ||
+ | |ADP-N5 | ||
+ | |15pin异面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |- | ||
+ | |AGX Orin | ||
+ | |ADP-N5 | ||
+ | |15pin异面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |- | ||
+ | | rowspan="10" |RAW系列(RAW-MIPI-SC132M除外) | ||
+ | |Nano A02 | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |1 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Nano B01 | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Nano 2GB | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |1 | ||
+ | |N/A | ||
+ | |- | ||
+ | |TX2 NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |XAVIER NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |15to22 pin 同面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Orin Nano | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |22pin 异面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |Orin NX | ||
+ | |N/A | ||
+ | |N/A | ||
+ | |22pin 异面FFC | ||
+ | |2 | ||
+ | |N/A | ||
+ | |- | ||
+ | |TX2 Devkit | ||
+ | |ADP-N5 | ||
+ | |15to22 pin 同面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |- | ||
+ | |AGX Xavier | ||
+ | |ADP-N5 | ||
+ | |15to22 pin 同面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |- | ||
+ | |AGX Orin | ||
+ | |ADP-N5 | ||
+ | |15to22 pin 同面FFC | ||
+ | |B2B连接器 | ||
+ | |6 | ||
+ | |N/A | ||
+ | |} | ||
+ | ==== MV系列摄像头使用ADP-MV1的连接方式 ==== | ||
− | ==== | + | ===== MV系列摄像头与ADP-MV1的连接 ===== |
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 | 二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 | ||
− | [[File:ADP-MV1-MV-MIPI-X 01.jpg|center|thumb| | + | {| class="wikitable" |
− | + | !TOP | |
− | + | !BOTTOM | |
− | = | + | |- |
+ | |[[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]] | ||
+ | |} | ||
===== 供电 ===== | ===== 供电 ===== | ||
Line 122: | Line 354: | ||
<br /> | <br /> | ||
− | ===== 使用ADP- | + | ===== 使用ADP-MV1连接到Nano和Xavier NX ===== |
Nano系列和NX系列采用这种连接方式。 | Nano系列和NX系列采用这种连接方式。 | ||
− | [[File:MV camera and Xavier NX connection.jpg|center|thumb|800x800px|MV camera and Xavier NX connection]] | + | [[File:MV camera and Xavier NX connection.jpg|center|thumb|800x800px|MV camera and Xavier NX connection]]<br /> |
+ | ===== 使用ADP-MV1连接到Orin Nano和 Orin NX ===== | ||
+ | 二者使用15P转22Pin的FFC同面线连接,注意接触面方向。 | ||
+ | [[File:MV camera connect to Orin Nano and Orin NX.jpg|center|thumb|800x800px|MV camera connect to Orin Nano and Orin NX]] | ||
+ | <br /> | ||
+ | |||
+ | ==== MV系列摄像头使用ADP-N4的连接方式 ==== | ||
+ | |||
+ | ===== MV系列摄像头与ADP-N4的连接 ===== | ||
+ | 二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向外。 | ||
+ | [[File:ADP-N4 and MV-MIPI-CAM.jpg|center|thumb|800x800px|MV-MIPI-CAM to ADP-N4]] | ||
+ | |||
+ | ===== 供电 ===== | ||
+ | ADP-N4需要独立的供电。它支持两种供电方式,二选其一即可。 | ||
+ | |||
+ | * 5V DC 接到 J19-9。可以使用杜邦线直接从Jetson主板取电。 | ||
+ | * 12V DC 接到J11。需使用外置适配器供电。 | ||
+ | |||
+ | ===== 使用ADP-N4的连接到TX2和AGX ===== | ||
+ | [[File:ADP-N4 to AGX XAVIER.jpg|alt=ADP-N4 to AGX XAVIER|center|thumb|800x800px|ADP-N4 to AGX XAVIER]] | ||
+ | <br /> | ||
+ | [[File:ADP-N4 to AGX Orin.jpg|center|thumb|800x800px|ADP-N4 to AGX Orin]] | ||
+ | [[File:ADP-N4 to TX2 Devkit.jpg|center|thumb|800x800px|ADP-N4 to TX2 Devkit]] | ||
+ | |||
+ | ==== RAW系列摄像头直接连接到Jetson主板 ==== | ||
+ | |||
+ | ===== RAW系列摄像头连接到Nano和Xavier NX ===== | ||
+ | RAW-MIPI-SC132M使用15pin异面FFC线,其他RAW系列相机使用15to22pin同面FFC线。注意相机端,FPC排线银色接触面向外。<br /> | ||
+ | [[File:RAW-MIPI-AR0234-NANO 01.jpg|center|thumb|800x800px|RAW camera and Jetson Nano connection]] | ||
+ | |||
+ | ===== RAW系列摄像头连接到Orin Nano和 Orin NX ===== | ||
+ | RAW-MIPI-SC132M使用15to22pin同面FFC线,其他RAW系列相机使用22pin异面FFC线。注意相机端,FPC排线银色接触面向外。 | ||
+ | [[File:RAW-MIPI-IMX462-ORIN NX.jpg|center|thumb|800x800px|RAW-MIPI-IMX462-ORIN NX]] | ||
<br /> | <br /> | ||
− | ==== | + | ==== RAW系列摄像头使用ADP-N5的连接方式 ==== |
− | + | ||
+ | ===== RAW系列摄像头与ADP-N5的连接 ===== | ||
+ | RAW-MIPI-SC132M使用15pin异面FFC线,其他RAW系列相机使用15to22pin同面FFC线。 | ||
+ | [[File:RAW-MIPI-IMX462-ADP-N5.jpg|center|thumb|800x800px|RAW-MIPI-IMX462 connect with ADP-N5]] | ||
+ | <br /> | ||
+ | ===== 使用ADP-N5连接到TX2和AGX ===== | ||
+ | [[File:RAW-MIPI-IMX462 connect to ADP-N5-AGX XAVIER.jpg|center|thumb|800x800px|ADP-N5 to AGX Xavier]] | ||
+ | <br /> | ||
+ | ==== V-by-One-HS-KIT摄像机连接示意图 ==== | ||
+ | [[File:VBYONE connection with Jetson.jpg|center|thumb|800x800px|V-by-One-HS-KIT connection with Jetson]] | ||
+ | <br /> | ||
=== 更新Jetson系统 === | === 更新Jetson系统 === | ||
− | 本章节描述怎样更新Jetson的L4T系统以支持MV摄像头模组。操作系统更新方法,请参考[[VEYE | + | 本章节描述怎样更新Jetson的L4T系统以支持MV摄像头模组。操作系统更新方法,请参考[[How to upgrade the Jetson system to support VEYE cameras/zh|更新Jetson操作系统]]。 |
− | + | 特别的,对于MV系列相机,除了在linux系统中增加了摄像头的驱动,我们还增加了一个内核补丁——veye_mv_l4t_<verion>.patch,并提供编译好的Image文件。 | |
这个patch具备两个功能: | 这个patch具备两个功能: | ||
Line 140: | Line 414: | ||
# 增加了trigger模式的支持。 | # 增加了trigger模式的支持。 | ||
− | + | === raw data图片格式说明 === | |
在TX2和XAVIER上,10 bit depth和12 bit depth的raw data在内存中的存储格式是不符合V4L2标准的。我们扩展了linux内核中的定义以支持这种情况。 | 在TX2和XAVIER上,10 bit depth和12 bit depth的raw data在内存中的存储格式是不符合V4L2标准的。我们扩展了linux内核中的定义以支持这种情况。 | ||
Line 191: | Line 465: | ||
|} | |} | ||
− | ===== XAVIER ===== | + | ===== XAVIER and Orin ===== |
{| class="wikitable" | {| class="wikitable" | ||
!Depth | !Depth | ||
Line 249: | Line 523: | ||
gstreamer中,v4l2src可以通过指明<code>device=/dev/videoX</code>来访问不同的摄像头。 | gstreamer中,v4l2src可以通过指明<code>device=/dev/videoX</code>来访问不同的摄像头。 | ||
+ | === 配置命令行全局变量 === | ||
+ | 为了后面描述方便,此处根据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-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> | ||
+ | |||
+ | * MV-MIPI-IMX287M | ||
+ | |||
+ | <code>export WIDTH=704</code> | ||
+ | |||
+ | <code>export HEIGHT=544</code> | ||
+ | |||
+ | <code>export FPS=319</code> | ||
+ | |||
+ | *RAW-MIPI-SC132M | ||
+ | |||
+ | <code>export WIDTH=1080</code> | ||
+ | |||
+ | <code>export HEIGHT=1280</code> | ||
+ | |||
+ | <code>export FPS=120</code> | ||
+ | |||
+ | *RAW-MIPI-IMX462M | ||
+ | |||
+ | <code>export WIDTH=1920</code> | ||
+ | |||
+ | <code>export HEIGHT=1080</code> | ||
+ | |||
+ | <code>export FPS=60</code> | ||
+ | |||
+ | *RAW-MIPI-AR0234M | ||
+ | |||
+ | <code>export WIDTH=1920</code> | ||
+ | |||
+ | <code>export HEIGHT=1200</code> | ||
+ | |||
+ | <code>export FPS=60</code> | ||
+ | |||
+ | *RAW-MIPI-SC535M | ||
+ | |||
+ | <code>export WIDTH=2432</code> | ||
+ | |||
+ | <code>export HEIGHT=2048</code> | ||
+ | |||
+ | <code>export FPS=50</code> | ||
=== v4l2-ctl 应用范例 === | === v4l2-ctl 应用范例 === | ||
=====安装v4l2-utils===== | =====安装v4l2-utils===== | ||
Line 257: | Line 613: | ||
<code>v4l2-ctl --list-formats-ext</code> | <code>v4l2-ctl --list-formats-ext</code> | ||
− | + | 下面是在XAVIER系统下,MV-MIPI-IMX178M的例子: | |
<code>ioctl: VIDIOC_ENUM_FMT</code> | <code>ioctl: VIDIOC_ENUM_FMT</code> | ||
Line 327: | Line 683: | ||
<code>User Controls</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_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write</code> | ||
Line 361: | Line 713: | ||
需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明: | 需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
====== 配置触发模式====== | ====== 配置触发模式====== | ||
<code>v4l2-ctl --set-ctrl <small>trigger_mode=[0-2]</small></code> | <code>v4l2-ctl --set-ctrl <small>trigger_mode=[0-2]</small></code> | ||
Line 391: | Line 734: | ||
随分辨率的调整,最大帧率会自动更新。 | 随分辨率的调整,最大帧率会自动更新。 | ||
======设置ROI和数据格式====== | ======设置ROI和数据格式====== | ||
− | + | 举例: | |
<code>v4l2-ctl --set-ctrl roi_x=0</code> | <code>v4l2-ctl --set-ctrl roi_x=0</code> | ||
Line 397: | Line 740: | ||
<code>v4l2-ctl --set-ctrl roi_y=0</code> | <code>v4l2-ctl --set-ctrl roi_y=0</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width= | + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY</code> |
设置roi后,最大帧率会自动调整。请注意,摄像机roi参数需要符合摄像机手册中的要求。 | 设置roi后,最大帧率会自动调整。请注意,摄像机roi参数需要符合摄像机手册中的要求。 | ||
Line 423: | Line 766: | ||
=====设置图像格式===== | =====设置图像格式===== | ||
− | + | 以最大画面为例: | |
<code>v4l2-ctl --set-ctrl roi_x=0</code> | <code>v4l2-ctl --set-ctrl roi_x=0</code> | ||
Line 429: | Line 772: | ||
<code>v4l2-ctl --set-ctrl roi_y=0</code> | <code>v4l2-ctl --set-ctrl roi_y=0</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width= | + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY</code> |
+ | |||
+ | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> | ||
=====帧率统计===== | =====帧率统计===== | ||
− | <code>v4l2-ctl --set-fmt-video=width= | + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> |
===== 保存图片到文件 ===== | ===== 保存图片到文件 ===== | ||
+ | |||
+ | ====== MV-MIPI-IMX178M ====== | ||
* raw8格式 | * raw8格式 | ||
Line 438: | Line 785: | ||
<code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136</code> | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-3136x2064.raw</code> | + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-3136x2064.raw</code> |
* raw10格式 | * raw10格式 | ||
Line 444: | Line 791: | ||
<code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208</code> | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-3104x2064.raw</code> | + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-3104x2064.raw</code> |
* raw12格式 | * raw12格式 | ||
Line 450: | Line 797: | ||
<code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208</code> | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-3104x2064.raw</code> | + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-3104x2064.raw</code> |
+ | |||
+ | ====== MV-MIPI-SC130M ====== | ||
+ | 由于宽度1280是64和256的整数倍,不需要设置preferred_stride。 | ||
+ | |||
+ | *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=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1280x1024.raw</code> | ||
+ | |||
+ | ====== MV-MIPI-IMX296M ====== | ||
+ | |||
+ | *raw8格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1472x1088.raw</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat=XY10 --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=XY10 --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=XY12 --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=XY10 --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=XY12 --stream-mmap --stream-count=1 --stream-to=y12-2432x2056.raw</code> | ||
+ | ====== RAW-MIPI-SC132M ====== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1088</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1080,height=1280,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1088x1280.raw</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1080,height=1280,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1080x1280.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=XY10 --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=XY12 --stream-mmap --stream-count=1 --stream-to=y12-704x544.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=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1920x1200.raw</code> | ||
+ | ======RAW-MIPI-IMX462M====== | ||
+ | |||
+ | *raw10格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat=XY10 --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=XY12 --stream-mmap --stream-count=1 --stream-to=y12-1920x1088.raw</code> | ||
图片格式请参考上面:raw data图片格式说明 章节。 | 图片格式请参考上面:raw data图片格式说明 章节。 | ||
+ | ======RAW-MIPI-SC535M====== | ||
+ | |||
+ | *raw8格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2432x2048.raw</code> | ||
===== 实时预览 ===== | ===== 实时预览 ===== | ||
+ | 对于支持GREY格式的摄像头,可以使用qv4l2或者vlc进行视频预览。 | ||
+ | |||
+ | ======使用qv4l2预览画面====== | ||
+ | Install qv4l2, | ||
+ | |||
+ | <code>sudo apt install qv4l2</code> | ||
+ | |||
+ | 1. Open VLC with command line <code>vlc</code> to launch. | ||
+ | |||
+ | 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|link=http://wiki.veye.cc/index.php/File:Mvcam_via_qv4l2.png]]<br /> | ||
+ | ======使用VLC预览画面====== | ||
+ | Install vlc, | ||
+ | |||
+ | <code>sudo apt-get install vlc</code> | ||
+ | |||
+ | 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. | ||
+ | <br />[[File:Mvcam via VLC.png|center|thumb|800x800px|Play mv camera using VLC|link=http://wiki.veye.cc/index.php/File:Mvcam_via_VLC.png]] | ||
+ | ====== 使用gstreamer预览UYVY格式图像 ====== | ||
+ | '''注''':为了提高最高帧率和带宽,部分模组升级固件后不再提供UYVY格式。具体请通过脚本的fmtcap指令读取寄存器确认。 | ||
+ | |||
+ | <code>export DISPLAY=:0</code> | ||
+ | |||
UYVY模式支持的最大宽度为2880,使用如下命令可以进行实时预览。 | UYVY模式支持的最大宽度为2880,使用如下命令可以进行实时预览。 | ||
− | <code>v4l2-ctl --set-fmt-video=width=2816,height=2064,pixelformat=UYVY</code> | + | * MV-MIPI-IMX178M |
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2816,height=2064,pixelformat=UYVY</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" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nv3dsink sync=false</code> | ||
+ | |||
+ | * MV-MIPI-SC130M, MV-MIPI-IMX296M, MV-MIPI-IMX265M,MV-MIPI-IMX264M,MV-MIPI-IMX287M | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --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" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nv3dsink sync=false</code> | ||
+ | |||
+ | ====== 使用opencv预览GREY格式图像 ====== | ||
+ | <code>sudo apt install python3-opencv</code> | ||
+ | |||
+ | * 我们提供了一个简单的[https://github.com/veyeimaging/nvidia_jetson_veye_bsp/tree/master/samples/opencv/raw_camera sample]实现此功能: | ||
− | <code> | + | <code>python3 ./v4l2dev_2_opencv_show_grey.py --roix 0 --roiy 0 --width 640 --height 480 --fps 30</code> |
==== 触发模式 ==== | ==== 触发模式 ==== | ||
=====准备工作===== | =====准备工作===== | ||
− | |||
− | |||
<code>v4l2-ctl --set-ctrl roi_x=0</code> | <code>v4l2-ctl --set-ctrl roi_x=0</code> | ||
Line 471: | Line 962: | ||
<code>v4l2-ctl --set-ctrl low_latency_mode=1</code> | <code>v4l2-ctl --set-ctrl low_latency_mode=1</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width= | + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY</code> |
+ | |||
+ | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> | ||
+ | |||
+ | 如有必要,设置合适的preferred_stride. | ||
+ | |||
+ | 比如,MV-MIPI-IMX178M,3088*2064: | ||
<code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136</code> | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136</code> | ||
+ | |||
+ | 比如,MV-MIPI-IMX296M,1440*1088: | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472</code> | ||
===== 软触发 ===== | ===== 软触发 ===== | ||
Line 484: | Line 985: | ||
<code>v4l2-ctl --set-ctrl vi_time_out_disable=1</code> | <code>v4l2-ctl --set-ctrl vi_time_out_disable=1</code> | ||
======开始取图====== | ======开始取图====== | ||
+ | |||
+ | * MV-MIPI-IMX178M | ||
+ | |||
<code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw</code> | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw</code> | ||
+ | |||
+ | * MV-MIPI-SC130M | ||
+ | |||
+ | <code>v4l2-ctl --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1280x1024.raw</code> | ||
+ | |||
+ | *MV-MIPI-IMX296M | ||
+ | |||
+ | <code>v4l2-ctl --set-fmt-video=width=1440,height=1088,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1472x1088.raw</code> | ||
+ | |||
+ | *MV-MIPI-IMX265M | ||
+ | |||
+ | <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> | ||
+ | |||
+ | *MV-MIPI-IMX264M | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-2432x2048.raw</code> | ||
+ | |||
+ | *RAW-MIPI-SC132M | ||
+ | |||
+ | <code>v4l2-ctl --set-fmt-video=width=1080,height=1280,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1080x1280.raw</code> | ||
+ | |||
+ | *MV-MIPI-IMX287M | ||
+ | |||
+ | <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> | ||
+ | |||
+ | *RAW-MIPI-AR0234M | ||
+ | |||
+ | <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> | ||
+ | |||
+ | *RAW-MIPI-IMX462M | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat=XY10 --stream-mmap --stream-count=-1 --stream-to=y8-1920x1088.raw</code> | ||
+ | |||
+ | * RAW-MIPI-SC535M | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-2432x2048.raw</code> | ||
+ | |||
======进行软触发操作====== | ======进行软触发操作====== | ||
在其他的shell终端,可以多次执行下面命令进行多次触发。 | 在其他的shell终端,可以多次执行下面命令进行多次触发。 | ||
Line 505: | Line 1,046: | ||
====== 硬件连接 ====== | ====== 硬件连接 ====== | ||
+ | |||
+ | * 使用ADP-MV1时 | ||
+ | |||
[[File:MV camera hardware trigger connection.jpg|center|thumb|800x800px|MV camera hardware trigger connection]] | [[File:MV camera hardware trigger connection.jpg|center|thumb|800x800px|MV camera hardware trigger connection]] | ||
− | + | ||
+ | * 使用ADP-N4时 | ||
+ | |||
+ | 如采用公共触发源连接,则首先将J7成对短接,然后将jetson GPIO40接到J19-1。 | ||
+ | [[File:ADP-N4 common trigger source.jpg|center|thumb|800x800px|ADP-N4 common trigger source]] | ||
+ | |||
+ | 如采用独立触发源连接,则直接将 GPIO40接到J7-1---J7-11。 | ||
======设置模式====== | ======设置模式====== | ||
<code>v4l2-ctl --set-ctrl <small>trigger_mode=1</small></code> | <code>v4l2-ctl --set-ctrl <small>trigger_mode=1</small></code> | ||
Line 514: | Line 1,064: | ||
<code>v4l2-ctl --set-ctrl vi_time_out_disable=1</code> | <code>v4l2-ctl --set-ctrl vi_time_out_disable=1</code> | ||
======开始取图====== | ======开始取图====== | ||
+ | |||
+ | * MV-MIPI-IMX178M | ||
+ | |||
<code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw</code> | <code>v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw</code> | ||
+ | |||
+ | * MV-MIPI-SC130M | ||
+ | |||
+ | <code>v4l2-ctl --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1280x1024.raw</code> | ||
======进行硬触发操作====== | ======进行硬触发操作====== | ||
<code>python gpio_trigger_jetson.py</code> | <code>python gpio_trigger_jetson.py</code> | ||
Line 541: | Line 1,098: | ||
=====设置图像格式===== | =====设置图像格式===== | ||
− | |||
− | |||
<code>v4l2-ctl --set-ctrl roi_x=0</code> | <code>v4l2-ctl --set-ctrl roi_x=0</code> | ||
<code>v4l2-ctl --set-ctrl roi_y=0</code> | <code>v4l2-ctl --set-ctrl roi_y=0</code> | ||
− | <code>v4l2-ctl --set-fmt-video=width= | + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY</code> |
===== 保存图片到文件 ===== | ===== 保存图片到文件 ===== | ||
+ | |||
+ | ====== MV-MIPI-IMX178M ====== | ||
* raw8格式 | * raw8格式 | ||
Line 571: | Line 1,128: | ||
<code>./yavta -c1 -Fy12-3104x2064.raw --skip 0 -f XY12 -s 3088x2064 /dev/video0</code> | <code>./yavta -c1 -Fy12-3104x2064.raw --skip 0 -f XY12 -s 3088x2064 /dev/video0</code> | ||
+ | |||
+ | ====== MV-MIPI-SC130M ====== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-1280x1024.raw --skip 0 -f Y8 -s 1280x1024 /dev/video0</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-1280x1024.raw --skip 0 -f XY10 -s 1280x1024 /dev/video0</code> | ||
+ | |||
+ | ====== MV-MIPI-IMX296M ====== | ||
+ | |||
+ | *raw8格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472</code> | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-1472x1024.raw --skip 0 -f Y8 -s 1440x1088 /dev/video0</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-1440x1024.raw --skip 0 -f XY10 -s 1440x1088 /dev/video0</code> | ||
+ | |||
+ | ====== MV-MIPI-IMX265M ====== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-2048x1544.raw --skip 0 -f Y8 -s 2048x1544 /dev/video0</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-2048x1544.raw --skip 0 -f XY10 -s 2048x1544 /dev/video0</code> | ||
+ | |||
+ | * raw12格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy12-2048x1544.raw --skip 0 -f XY12 -s 2048x1544 /dev/video0</code> | ||
+ | |||
+ | ====== MV-MIPI-IMX264M ====== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-2432x2048.raw --skip 0 -f Y8 -s 2432x2048 /dev/video0</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-2432x2048.raw --skip 0 -f XY10 -s 2432x2048 /dev/video0</code> | ||
+ | |||
+ | * raw12格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy12-2432x2048.raw --skip 0 -f XY12 -s 2432x2048 /dev/video0</code> | ||
+ | ====== RAW-MIPI-SC132M ====== | ||
+ | |||
+ | * raw8 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-1080x1280.raw --skip 0 -f Y8 -s 1080x1280 /dev/video0</code> | ||
+ | |||
+ | * raw10 | ||
+ | |||
+ | 以XAVIER平台为例. | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-1080x1280.raw --skip 0 -f XY10 -s 1080x1280 /dev/video0</code> | ||
+ | ====== MV-MIPI-IMX287M ====== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-704x544.raw --skip 0 -f Y8 -s 704x544 /dev/video0</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-704x544.raw --skip 0 -f XY10 -s 704x544 /dev/video0</code> | ||
+ | |||
+ | * raw12格式 | ||
+ | |||
+ | 以XAVIER平台为例 | ||
+ | |||
+ | <code>./yavta -c1 -Fy12-704x544.raw --skip 0 -f XY12 -s 704x544 /dev/video0</code> | ||
+ | ====== RAW-MIPI-AR0234M ====== | ||
+ | |||
+ | * raw8 | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-1920x1200.raw --skip 0 -f Y8 -s 1920x1200 /dev/video0</code> | ||
+ | |||
+ | * raw10 | ||
+ | |||
+ | 以XAVIER平台为例. | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-1920x1200.raw --skip 0 -f XY10 -s 1920x1200 /dev/video0</code> | ||
+ | ====== RAW-MIPI-IMX462M ====== | ||
+ | 以XAVIER平台为例. | ||
+ | |||
+ | * raw12 | ||
+ | |||
+ | <code>./yavta -c1 -Fy12-1920x1088.raw --skip 0 -f XY12 -s 1920x1088 /dev/video0</code> | ||
+ | |||
+ | * raw10 | ||
+ | |||
+ | <code>./yavta -c1 -Fy10-1920x1088.raw --skip 0 -f XY10 -s 1920x1088 /dev/video0</code> | ||
图片格式请参考上面:raw data图片格式说明 章节。 | 图片格式请参考上面:raw data图片格式说明 章节。 | ||
+ | ====== RAW-MIPI-SC535M ====== | ||
− | < | + | * raw8 |
+ | |||
+ | <code>./yavta -c1 -Fy8-2432x2048.raw --skip 0 -f Y8 -s 2432x2048 /dev/video0</code> | ||
=== i2c脚本使用说明 === | === i2c脚本使用说明 === | ||
Line 582: | Line 1,253: | ||
=== 参考资料 === | === 参考资料 === | ||
=== 本文修改记录 === | === 本文修改记录 === | ||
+ | |||
+ | * 2024-08-13 | ||
+ | |||
+ | 增加Jetpack6.0的支持。 | ||
+ | |||
+ | * 2024-05-22 | ||
+ | |||
+ | 增加对RAW-MIPI-SC535M的支持。 | ||
+ | |||
+ | 增加Jetpack5.1.3的支持。 | ||
+ | |||
+ | *2023-08-29 | ||
+ | |||
+ | 增加对RAW-MIPI-IMX462M和RAW-MIPI-AR0234M的支持。 | ||
+ | |||
+ | * 2023-07-31 | ||
+ | |||
+ | 调通V-by-One连接的驱动。 | ||
+ | |||
+ | * 2023-06-07 | ||
+ | |||
+ | 增加使用qv4l2和VLC预览画面的方法。 | ||
+ | |||
+ | *2023-04-27 | ||
+ | |||
+ | 支持Jetpack5.1.1. | ||
+ | |||
+ | * 2023-04-16 | ||
+ | |||
+ | 去掉flip和mirror的ioctl功能。 | ||
+ | |||
+ | * 2023-03-29 | ||
+ | |||
+ | 增加opencv sample。 | ||
+ | |||
+ | *2023-03-37 | ||
+ | |||
+ | 增加MV-MIPI-IMX287M的相关描述。 | ||
+ | |||
+ | *2023-02-22 | ||
+ | |||
+ | 支持Jetpack5.1 | ||
+ | |||
+ | *2022-12-11 | ||
+ | |||
+ | 增加MV-MIPI-IMX264M的相关描述。 | ||
+ | |||
+ | * 2022-10-14 | ||
+ | |||
+ | 增加MV-MIPI-IMX296M和MV-MIPI-IMX265M的相关描述。 | ||
+ | |||
+ | * 2022-08-31 | ||
+ | |||
+ | 支持Jetpack5.0.2 | ||
+ | |||
+ | *2022-06-23 | ||
+ | |||
+ | 增加ADP-N4的相关描述 | ||
* 2022-05-20 | * 2022-05-20 | ||
第一个发布版本 | 第一个发布版本 |
Latest revision as of 15:09, 18 November 2024
1 概述
MV系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
本文介绍了如何在英伟达Jetson平台使用MV系列相机。
1.1 支持的摄像机模组
系列 | 型号 | 状态 |
---|---|---|
MV系列 | MV-MIPI-IMX178M | 完成 |
MV系列 | MV-MIPI-SC130M | 完成 |
MV系列 | MV-MIPI-IMX296M | 完成 |
MV系列 | MV-MIPI-IMX287M | 完成 |
MV系列 | MV-MIPI-IMX265M | 完成 |
MV系列 | MV-MIPI-IMX264M | 完成 |
RAW系列 | RAW-MIPI-SC132M | 完成 |
RAW系列 | RAW-MIPI-AR0234M | 完成 |
RAW系列 | RAW-MIPI-IMX462M | 完成 |
RAW系列 | RAW-MIPI-SC535M | 完成 |
此外,已经调通V-by-One HS连接模式的驱动。
1.2 支持的Jetson Board
Jetson型号 | 状态 |
---|---|
Nano A02 | 完成 |
Nano B01 | 完成 |
Nano 2GB | 完成 |
TX2 NX | 完成 |
XAVIER NX | 完成 |
TX2 Devkit | 完成 |
AGX Xavier | 完成 |
AGX Orin | 完成 |
Orin NX | 完成 |
Orin Nano | 完成 |
1.3 支持的L4T版本
- Jetpack4.6.1,L4T版本r32.7.1
- Jetpack4.6.3,L4T版本r32.7.3
- Jetpack4.6.4,L4T版本r32.7.4
- Jetpack5.0.2,L4T版本r35.1
- Jetpack5.1,L4T版本r35.2.1
- Jetpack5.1.1,L4T版本r35.3.1
- Jetpack5.1.2,L4T版本r35.4.1
- Jetpack5.1.3,L4T版本r35.5
- Jetpack6.0,L4T版本r36.3
- Jetpack6.1,L4T版本r36.4
1.3.1 怎样查看当前L4T版本
在jetson板子上,查看当前L4T版本,尽量使用同一版本进行替换。
cat /etc/nv_tegra_release
如显示:
# R32 (release), REVISION: 7.1......
则表示当前L4T版本为32.7.1,对应的Jetpack版本是Jetpack32.6.1。
2 硬件准备以及安装
MV系列相机需要转接板才可以接入Jetson平台。支持情况如下表:
Camera型号 | Jetson型号 | 转接板 | FFC线(to 转接板) | FFC线(to Jetson主板) | 摄像机数量 | 额外供电 |
---|---|---|---|---|---|---|
MV系列 | Nano A02 | ADP-MV1 | 30pin异面FFC | 15pin异面FFC | 1 | 5V DC(必须) |
Nano B01 | ADP-MV1 | 30pin异面FFC | 15pin异面FFC | 2 | 5V DC(必须) | |
Nano 2GB | ADP-MV1 | 30pin异面FFC | 15pin异面FFC | 1 | 5V DC(必须) | |
TX2 NX | ADP-MV1 | 30pin异面FFC | 15pin异面FFC | 2 | 5V DC(必须) | |
XAVIER NX | ADP-MV1 | 30pin异面FFC | 15pin异面FFC | 2 | 5V DC(必须) | |
Orin Nano | ADP-MV1 | 30pin异面FFC | 15to22 pin 同面FFC | 2 | 5V DC(必须) | |
Orin NX | ADP-MV1 | 30pin异面FFC | 15to22 pin 同面FFC | 2 | 5V DC(必须) | |
TX2 Devkit | ADP-N4 | 30pin异面FFC | B2B连接器 | 6 | 5V或12V DC (必须) | |
AGX Xavier | ADP-N4 | 30pin异面FFC | B2B连接器 | 6 | 5V或12V DC (必须) | |
AGX Orin | ADP-N4 | 30pin异面FFC | B2B连接器 | 6 | 5V或12V DC (必须) | |
RAW-MIPI-SC132M | Nano A02 | N/A | N/A | 15pin异面FFC | 1 | N/A |
Nano B01 | N/A | N/A | 15pin异面FFC | 2 | N/A | |
Nano 2GB | N/A | N/A | 15pin异面FFC | 1 | N/A | |
TX2 NX | N/A | N/A | 15pin异面FFC | 2 | N/A | |
XAVIER NX | N/A | N/A | 15pin异面FFC | 2 | N/A | |
Orin Nano | N/A | N/A | 15to22 pin 同面FFC | 2 | N/A | |
Orin NX | N/A | N/A | 15to22 pin 同面FFC | 2 | N/A | |
TX2 Devkit | ADP-N5 | 15pin异面FFC | B2B连接器 | 6 | N/A | |
AGX Xavier | ADP-N5 | 15pin异面FFC | B2B连接器 | 6 | N/A | |
AGX Orin | ADP-N5 | 15pin异面FFC | B2B连接器 | 6 | N/A | |
RAW系列(RAW-MIPI-SC132M除外) | Nano A02 | N/A | N/A | 15to22 pin 同面FFC | 1 | N/A |
Nano B01 | N/A | N/A | 15to22 pin 同面FFC | 2 | N/A | |
Nano 2GB | N/A | N/A | 15to22 pin 同面FFC | 1 | N/A | |
TX2 NX | N/A | N/A | 15to22 pin 同面FFC | 2 | N/A | |
XAVIER NX | N/A | N/A | 15to22 pin 同面FFC | 2 | N/A | |
Orin Nano | N/A | N/A | 22pin 异面FFC | 2 | N/A | |
Orin NX | N/A | N/A | 22pin 异面FFC | 2 | N/A | |
TX2 Devkit | ADP-N5 | 15to22 pin 同面FFC | B2B连接器 | 6 | N/A | |
AGX Xavier | ADP-N5 | 15to22 pin 同面FFC | B2B连接器 | 6 | N/A | |
AGX Orin | ADP-N5 | 15to22 pin 同面FFC | B2B连接器 | 6 | N/A |
2.1 MV系列摄像头使用ADP-MV1的连接方式
2.1.1 MV系列摄像头与ADP-MV1的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.1.2 供电
ADP-MV1需要独立的5V供电,可以使用杜邦线直接从Jetson主板取电。
2.1.3 使用ADP-MV1连接到Nano和Xavier NX
Nano系列和NX系列采用这种连接方式。
2.1.4 使用ADP-MV1连接到Orin Nano和 Orin NX
二者使用15P转22Pin的FFC同面线连接,注意接触面方向。
2.2 MV系列摄像头使用ADP-N4的连接方式
2.2.1 MV系列摄像头与ADP-N4的连接
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向外。
2.2.2 供电
ADP-N4需要独立的供电。它支持两种供电方式,二选其一即可。
- 5V DC 接到 J19-9。可以使用杜邦线直接从Jetson主板取电。
- 12V DC 接到J11。需使用外置适配器供电。
2.2.3 使用ADP-N4的连接到TX2和AGX
2.3 RAW系列摄像头直接连接到Jetson主板
2.3.1 RAW系列摄像头连接到Nano和Xavier NX
RAW-MIPI-SC132M使用15pin异面FFC线,其他RAW系列相机使用15to22pin同面FFC线。注意相机端,FPC排线银色接触面向外。
2.3.2 RAW系列摄像头连接到Orin Nano和 Orin NX
RAW-MIPI-SC132M使用15to22pin同面FFC线,其他RAW系列相机使用22pin异面FFC线。注意相机端,FPC排线银色接触面向外。
2.4 RAW系列摄像头使用ADP-N5的连接方式
2.4.1 RAW系列摄像头与ADP-N5的连接
RAW-MIPI-SC132M使用15pin异面FFC线,其他RAW系列相机使用15to22pin同面FFC线。
2.4.2 使用ADP-N5连接到TX2和AGX
2.5 V-by-One-HS-KIT摄像机连接示意图
3 更新Jetson系统
本章节描述怎样更新Jetson的L4T系统以支持MV摄像头模组。操作系统更新方法,请参考更新Jetson操作系统。
特别的,对于MV系列相机,除了在linux系统中增加了摄像头的驱动,我们还增加了一个内核补丁——veye_mv_l4t_<verion>.patch,并提供编译好的Image文件。
这个patch具备两个功能:
- 增加了黑白相机的Y10和Y12两种数据格式的支持。
- 增加了trigger模式的支持。
4 raw data图片格式说明
在TX2和XAVIER上,10 bit depth和12 bit depth的raw data在内存中的存储格式是不符合V4L2标准的。我们扩展了linux内核中的定义以支持这种情况。
TY10、TY12、XY10和XY12是我们新增的类型。
4.1 Nano
Depth | Bit order | FourCC | Enumerator |
---|---|---|---|
8 | B7 B6 B5 B4 B3 B2 B1 B0 | GREY | V4L2_PIX_FMT_GREY |
10 | 0 0 0 0 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 | 'Y10 ' | V4L2_PIX_FMT_Y10 |
12 | 0 0 0 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 | 'Y12 ' | V4L2_PIX_FMT_Y12 |
4.2 TX2
Depth | Bit order (X is undefined) | FourCC | Enumerator |
---|---|---|---|
8 | B7 B6 B5 B4 B3 B2 B1 B0 | GREY | V4L2_PIX_FMT_GREY |
10 | 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X | TY10 | V4L2_PIX_FMT_TX2_Y10 |
12 | 0 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X | TY12 | V4L2_PIX_FMT_TX2_Y12 |
4.3 XAVIER and Orin
Depth | Bit order (X is undefined) | FourCC | Enumerator |
---|---|---|---|
8 | B7 B6 B5 B4 B3 B2 B1 B0 | GREY | V4L2_PIX_FMT_GREY |
10 | 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X X | XY10 | V4L2_PIX_FMT_XAVIER_Y10 |
12 | 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X | XY12 | V4L2_PIX_FMT_XAVIER_Y12 |
同时,我们提供了工具软件,以便将特殊的数据格式转为标准格式。https://github.com/veyeimaging/pixel_layer_convert。
推荐使用vooya作为播放器。
4.4 Trigger模式的支持
Jetson系统的默认驱动只支持视频流模式。在其VI驱动中,数据接收功能具有超时机制。我们增加了一个可设的vi_time_out_disable选项,可以动态打开和关闭这个超时机制。
具体应用参考下面的应用范例。
5 系统状态检测
完成系统更新后,重启Jetson主板。
Jetson系统启动过程中,会检测所有i2c bus上摄像头是否存在,如果存在则生成/dev/videoX设备节点。
在Jetson板端执行以下命令来检测是否正确连接摄像头。
dmesg | grep mvcam
可以看到linux启动阶段probe到的相机型号和以及相机的版本号:
比如下面这个提示,表示在i2c-10总线上检测到了MV-MIPI-IMX178M摄像机。
mvcam 10-003b: camera is: MV-MIPI-IMX178M
mvcam 10-003b: firmware version: 0x1080103
5.1 /dev/videoX设备节点
摄像头模组在Jetson系统中映射为/dev/videoX设备节点。
操作系统启动过程中,按照i2c bus从小到大的顺序探测摄像头。X值是按照探测的逻辑顺序从0开始递增的。
举例说,如果只接入一个摄像头,无论硬件连接到哪个位置,X都为0。如果接入5个,则按照i2c bus从小到大,X为[0-4]。
v4l2-ctl命令中,使用-d /dev/videoX
来访问不同的摄像头。
gstreamer中,v4l2src可以通过指明device=/dev/videoX
来访问不同的摄像头。
6 配置命令行全局变量
为了后面描述方便,此处根据sensor尺寸,配置全局变量。
- MV-MIPI-IMX178M
export WIDTH=3088
export HEIGHT=2064
export FPS=22
- MV-MIPI-SC130M
export WIDTH=1280
export HEIGHT=1024
export FPS=108
- MV-MIPI-IMX296M
export WIDTH=1440
export HEIGHT=1088
export FPS=60
- MV-MIPI-IMX265M
export WIDTH=2048
export HEIGHT=1544
export FPS=45
- MV-MIPI-IMX264M
export WIDTH=2432
export HEIGHT=2056
export FPS=28
- MV-MIPI-IMX287M
export WIDTH=704
export HEIGHT=544
export FPS=319
- RAW-MIPI-SC132M
export WIDTH=1080
export HEIGHT=1280
export FPS=120
- RAW-MIPI-IMX462M
export WIDTH=1920
export HEIGHT=1080
export FPS=60
- RAW-MIPI-AR0234M
export WIDTH=1920
export HEIGHT=1200
export FPS=60
- RAW-MIPI-SC535M
export WIDTH=2432
export HEIGHT=2048
export FPS=50
7 v4l2-ctl 应用范例
7.1 安装v4l2-utils
sudo apt-get install v4l-utils
7.2 使用v4l2-ctl配置参数
7.2.1 列出相机支持的数据格式
v4l2-ctl --list-formats-ext
下面是在XAVIER系统下,MV-MIPI-IMX178M的例子:
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'UYVY'
Name : UYVY 4:2:2
Size: Discrete 3088x2064
Interval: Discrete 0.045s (22.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'NV16'
Name : Y/CbCr 4:2:2
Size: Discrete 3088x2064
Interval: Discrete 0.045s (22.000 fps)
Index : 2
Type : Video Capture
Pixel Format: 'GREY'
Name : 8-bit Greyscale
Size: Discrete 3088x2064
Interval: Discrete 0.045s (22.000 fps)
Index : 3
Type : Video Capture
Pixel Format: 'XY10'
Name : XAVIER 10-bit/16-bit Greyscale
Size: Discrete 3088x2064
Interval: Discrete 0.045s (22.000 fps)
Index : 4
Type : Video Capture
Pixel Format: 'XY12'
Name : XAVIER 12-bit/16-bit Greyscale
Size: Discrete 3088x2064
Interval: Discrete 0.045s (22.000 fps)
需要特别说明的是,MV系列相机提供的UYVY和NV16模式仅作调试使用,且最大宽度不能超过2880。
7.2.2 列出驱动中实现的相机的可配置参数
v4l2-ctl -L
User Controls
trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write
trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write
soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write
frame_rate 0x00981904 (int) : min=1 max=22 step=1 default=22 value=22 flags=volatile, execute-on-write
roi_x 0x00981905 (int) : min=0 max=2712 step=8 default=0 value=0
roi_y 0x00981906 (int) : min=0 max=1744 step=4 default=0 value=0
Camera Controls
low_latency_mode 0x009a206d (bool) : default=0 value=0
preferred_stride 0x009a206e (int) : min=0 max=65535 step=1 default=0 value=0
vi_time_out_disable 0x009a2078 (bool) : default=0 value=0
可以使用下面的方法设置和获取参数。
v4l2-ctl --set-ctrl [ctrl_type]=[val]
v4l2-ctl --get-ctrl [ctrl_type]
以上所有功能,均可使用mv_mipi_i2c.sh实现。
需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明:
7.2.3 配置触发模式
v4l2-ctl --set-ctrl trigger_mode=[0-2]
0:流模式
1:普通触发模式
2:快速连续触发模式
7.2.4 配置触发源
v4l2-ctl --set-ctrl trigger_src=[0-1]
0: 软触发
1: 硬触发
7.2.5 软触发一次
v4l2-ctl --set-ctrl soft_trgone=1
7.2.6 设置帧率
v4l2-ctl --set-ctrl frame_rate=[1-max]
随分辨率的调整,最大帧率会自动更新。
7.2.7 设置ROI和数据格式
举例:
v4l2-ctl --set-ctrl roi_x=0
v4l2-ctl --set-ctrl roi_y=0
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY
设置roi后,最大帧率会自动调整。请注意,摄像机roi参数需要符合摄像机手册中的要求。
7.2.8 preferred_stride
preferred_stride指一行图像数据需要的内存大小。Jetson平台的图像数据是unpacked存储的,即10bit depth和12 bit depth的数据格式下,一个像素占用两个字节。
- 普通情况下,buffer需要64字节对齐。
preferred_stride= ALIGN_UP(width*bytes_per_pixel,64)
比如宽度为3088时:
8bit depth,preferred_stride=3136。
10bit depth,preferred_stride=6208。
12bit depth,preferred_stride=6208。
- 如果使用VIC buffer,则需要256字节对齐。
preferred_stride= ALIGN_UP(width*bytes_per_pixel,256)
7.3 流模式
7.3.1 设置图像格式
以最大画面为例:
v4l2-ctl --set-ctrl roi_x=0
v4l2-ctl --set-ctrl roi_y=0
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY
v4l2-ctl --set-ctrl frame_rate=$FPS
7.3.2 帧率统计
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null
7.3.3 保存图片到文件
7.3.3.1 MV-MIPI-IMX178M
- raw8格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136
v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-3136x2064.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208
v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-3104x2064.raw
- raw12格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208
v4l2-ctl -d /dev/video0 --set-fmt-video=width=3088,height=2064,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-3104x2064.raw
7.3.3.2 MV-MIPI-SC130M
由于宽度1280是64和256的整数倍,不需要设置preferred_stride。
- raw8格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1280x1024.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=1024,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1280x1024.raw
7.3.3.3 MV-MIPI-IMX296M
- raw8格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1472x1088.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1440,height=1088,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1440x1088.raw
7.3.3.4 MV-MIPI-IMX265M
- raw8格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2048x1544.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-2048x1544.raw
- raw12格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-2048x1544.raw
7.3.3.5 MV-MIPI-IMX264M
- raw8
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2432x2056.raw
- raw10
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-2432x2056.raw
- raw12
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2056,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-2432x2056.raw
7.3.3.6 RAW-MIPI-SC132M
- raw8格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1088
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1080,height=1280,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1088x1280.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1080,height=1280,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1080x1280.raw
7.3.3.7 MV-MIPI-IMX287M
- raw8
v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-704x544.raw
- raw10
v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-704x544.raw
- raw12
v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-704x544.raw
7.3.3.8 RAW-MIPI-AR0234M
- raw8格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1200,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-1920x1200.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1200,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1920x1200.raw
7.3.3.9 RAW-MIPI-IMX462M
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat=XY10 --stream-mmap --stream-count=1 --stream-to=y10-1920x1088.raw
- raw12格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat=XY12 --stream-mmap --stream-count=1 --stream-to=y12-1920x1088.raw
图片格式请参考上面:raw data图片格式说明 章节。
7.3.3.10 RAW-MIPI-SC535M
- raw8格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-2432x2048.raw
7.3.4 实时预览
对于支持GREY格式的摄像头,可以使用qv4l2或者vlc进行视频预览。
7.3.4.1 使用qv4l2预览画面
Install qv4l2,
sudo apt install qv4l2
1. Open VLC with command line vlc
to launch.
2. Hit the ▶
(Play) button to call the open media window.
7.3.4.2 使用VLC预览画面
Install vlc,
sudo apt-get install vlc
1. Open VLC with command line vlc
, or click the icon to launch.
2. Hit the ▶
(Play) button to call the open media window.
3. In Capture Device
>> Device Selection
>> Video device name
, select the camera video node.
4. Hit Advanced Options...
button
5. Type in the width
and height
, for example, 1280 and 1024.
6. Hit OK
to save the settings and see the video feed.
7.3.4.3 使用gstreamer预览UYVY格式图像
注:为了提高最高帧率和带宽,部分模组升级固件后不再提供UYVY格式。具体请通过脚本的fmtcap指令读取寄存器确认。
export DISPLAY=:0
UYVY模式支持的最大宽度为2880,使用如下命令可以进行实时预览。
- MV-MIPI-IMX178M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2816,height=2064,pixelformat=UYVY
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)2816, height=(int)2064, framerate=(fraction)22/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nv3dsink sync=false
- MV-MIPI-SC130M, MV-MIPI-IMX296M, MV-MIPI-IMX265M,MV-MIPI-IMX264M,MV-MIPI-IMX287M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY
v4l2-ctl -d /dev/video0 --set-ctrl frame_rate=$FPS
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)$WIDTH, height=(int)$HEIGHT, framerate=(fraction)$FPS/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nv3dsink sync=false
7.3.4.4 使用opencv预览GREY格式图像
sudo apt install python3-opencv
- 我们提供了一个简单的sample实现此功能:
python3 ./v4l2dev_2_opencv_show_grey.py --roix 0 --roiy 0 --width 640 --height 480 --fps 30
7.4 触发模式
7.4.1 准备工作
v4l2-ctl --set-ctrl roi_x=0
v4l2-ctl --set-ctrl roi_y=0
v4l2-ctl --set-ctrl low_latency_mode=1
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY
v4l2-ctl --set-ctrl frame_rate=$FPS
如有必要,设置合适的preferred_stride.
比如,MV-MIPI-IMX178M,3088*2064:
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136
比如,MV-MIPI-IMX296M,1440*1088:
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472
7.4.2 软触发
7.4.2.1 设置模式
v4l2-ctl --set-ctrl trigger_mode=1
v4l2-ctl --set-ctrl trigger_src=0
v4l2-ctl --set-ctrl vi_time_out_disable=1
7.4.2.2 开始取图
- MV-MIPI-IMX178M
v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw
- MV-MIPI-SC130M
v4l2-ctl --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1280x1024.raw
- MV-MIPI-IMX296M
v4l2-ctl --set-fmt-video=width=1440,height=1088,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1472x1088.raw
- MV-MIPI-IMX265M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2048,height=1544,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-2048x1544.raw
- MV-MIPI-IMX264M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-2432x2048.raw
- RAW-MIPI-SC132M
v4l2-ctl --set-fmt-video=width=1080,height=1280,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1080x1280.raw
- MV-MIPI-IMX287M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=704,height=544,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-704x544.raw
- RAW-MIPI-AR0234M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1200,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1920x1200.raw
- RAW-MIPI-IMX462M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1088,pixelformat=XY10 --stream-mmap --stream-count=-1 --stream-to=y8-1920x1088.raw
- RAW-MIPI-SC535M
v4l2-ctl -d /dev/video0 --set-fmt-video=width=2432,height=2048,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-2432x2048.raw
7.4.2.3 进行软触发操作
在其他的shell终端,可以多次执行下面命令进行多次触发。
v4l2-ctl --set-ctrl soft_trgone=1
7.4.2.4 停止触发和采集
由于内核驱动中,死循环等待新图片,因此需要先取消vi_time_out_disable,然后再退出采集操作。
v4l2-ctl --set-ctrl vi_time_out_disable=0
在取图命令的终端中,按Ctrl+C退出采集操作。
7.4.3 硬触发
使用jetson-gpio进行触发操作,首先请安装并配置好jetson-gpio。
下面以使用jetson GPIO40(Board num)为模拟触发源,上升沿触发为例。
可以使用mv_mipi_i2c.sh脚本进行丰富的触发参数设置。
7.4.3.1 硬件连接
- 使用ADP-MV1时
- 使用ADP-N4时
如采用公共触发源连接,则首先将J7成对短接,然后将jetson GPIO40接到J19-1。
如采用独立触发源连接,则直接将 GPIO40接到J7-1---J7-11。
7.4.3.2 设置模式
v4l2-ctl --set-ctrl trigger_mode=1
v4l2-ctl --set-ctrl trigger_src=1
v4l2-ctl --set-ctrl vi_time_out_disable=1
7.4.3.3 开始取图
- MV-MIPI-IMX178M
v4l2-ctl --set-fmt-video=width=3088,height=2064,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-3104x2064.raw
- MV-MIPI-SC130M
v4l2-ctl --set-fmt-video=width=1280,height=1024,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=y8-1280x1024.raw
7.4.3.4 进行硬触发操作
python gpio_trigger_jetson.py
Note:触发脚本链接。
7.4.3.5 停止触发和采集
由于内核驱动中,死循环等待新图片,因此需要先取消vi_time_out_disable,然后再退出采集操作。
v4l2-ctl --set-ctrl vi_time_out_disable=0
在取图命令的终端中,按Ctrl+C退出采集操作。
8 Application demo
8.1 v4l2grab_mvcam_jetson
v4l2grab_mvcam是一个C语言开发的sample,支持流模式和触发模式。
8.2 yavta(仅支持流模式)
8.2.1 yavta安装
git clone https://github.com/veyeimaging/yavta.git
cd yavta;make
8.2.2 设置图像格式
v4l2-ctl --set-ctrl roi_x=0
v4l2-ctl --set-ctrl roi_y=0
v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY
8.2.3 保存图片到文件
8.2.3.1 MV-MIPI-IMX178M
- raw8格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=3136
./yavta -c1 -Fy8-3136x2064.raw --skip 0 -f Y8 -s 3088x2064 /dev/video0
- raw10格式
以XAVIER平台为例
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208
./yavta -c1 -Fy10-3104x2064.raw --skip 0 -f XY10 -s 3088x2064 /dev/video0
- raw12格式
以XAVIER平台为例
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=6208
./yavta -c1 -Fy12-3104x2064.raw --skip 0 -f XY12 -s 3088x2064 /dev/video0
8.2.3.2 MV-MIPI-SC130M
- raw8格式
./yavta -c1 -Fy8-1280x1024.raw --skip 0 -f Y8 -s 1280x1024 /dev/video0
- raw10格式
以XAVIER平台为例
./yavta -c1 -Fy10-1280x1024.raw --skip 0 -f XY10 -s 1280x1024 /dev/video0
8.2.3.3 MV-MIPI-IMX296M
- raw8格式
v4l2-ctl -d /dev/video0 --set-ctrl preferred_stride=1472
./yavta -c1 -Fy8-1472x1024.raw --skip 0 -f Y8 -s 1440x1088 /dev/video0
- raw10格式
以XAVIER平台为例
./yavta -c1 -Fy10-1440x1024.raw --skip 0 -f XY10 -s 1440x1088 /dev/video0
8.2.3.4 MV-MIPI-IMX265M
- raw8格式
./yavta -c1 -Fy8-2048x1544.raw --skip 0 -f Y8 -s 2048x1544 /dev/video0
- raw10格式
以XAVIER平台为例
./yavta -c1 -Fy10-2048x1544.raw --skip 0 -f XY10 -s 2048x1544 /dev/video0
- raw12格式
以XAVIER平台为例
./yavta -c1 -Fy12-2048x1544.raw --skip 0 -f XY12 -s 2048x1544 /dev/video0
8.2.3.5 MV-MIPI-IMX264M
- raw8格式
./yavta -c1 -Fy8-2432x2048.raw --skip 0 -f Y8 -s 2432x2048 /dev/video0
- raw10格式
以XAVIER平台为例
./yavta -c1 -Fy10-2432x2048.raw --skip 0 -f XY10 -s 2432x2048 /dev/video0
- raw12格式
以XAVIER平台为例
./yavta -c1 -Fy12-2432x2048.raw --skip 0 -f XY12 -s 2432x2048 /dev/video0
8.2.3.6 RAW-MIPI-SC132M
- raw8
./yavta -c1 -Fy8-1080x1280.raw --skip 0 -f Y8 -s 1080x1280 /dev/video0
- raw10
以XAVIER平台为例.
./yavta -c1 -Fy10-1080x1280.raw --skip 0 -f XY10 -s 1080x1280 /dev/video0
8.2.3.7 MV-MIPI-IMX287M
- raw8格式
./yavta -c1 -Fy8-704x544.raw --skip 0 -f Y8 -s 704x544 /dev/video0
- raw10格式
以XAVIER平台为例
./yavta -c1 -Fy10-704x544.raw --skip 0 -f XY10 -s 704x544 /dev/video0
- raw12格式
以XAVIER平台为例
./yavta -c1 -Fy12-704x544.raw --skip 0 -f XY12 -s 704x544 /dev/video0
8.2.3.8 RAW-MIPI-AR0234M
- raw8
./yavta -c1 -Fy8-1920x1200.raw --skip 0 -f Y8 -s 1920x1200 /dev/video0
- raw10
以XAVIER平台为例.
./yavta -c1 -Fy10-1920x1200.raw --skip 0 -f XY10 -s 1920x1200 /dev/video0
8.2.3.9 RAW-MIPI-IMX462M
以XAVIER平台为例.
- raw12
./yavta -c1 -Fy12-1920x1088.raw --skip 0 -f XY12 -s 1920x1088 /dev/video0
- raw10
./yavta -c1 -Fy10-1920x1088.raw --skip 0 -f XY10 -s 1920x1088 /dev/video0
图片格式请参考上面:raw data图片格式说明 章节。
8.2.3.10 RAW-MIPI-SC535M
- raw8
./yavta -c1 -Fy8-2432x2048.raw --skip 0 -f Y8 -s 2432x2048 /dev/video0
9 i2c脚本使用说明
我们提供了shell脚本来配置参数。
10 参考资料
11 本文修改记录
- 2024-08-13
增加Jetpack6.0的支持。
- 2024-05-22
增加对RAW-MIPI-SC535M的支持。
增加Jetpack5.1.3的支持。
- 2023-08-29
增加对RAW-MIPI-IMX462M和RAW-MIPI-AR0234M的支持。
- 2023-07-31
调通V-by-One连接的驱动。
- 2023-06-07
增加使用qv4l2和VLC预览画面的方法。
- 2023-04-27
支持Jetpack5.1.1.
- 2023-04-16
去掉flip和mirror的ioctl功能。
- 2023-03-29
增加opencv sample。
- 2023-03-37
增加MV-MIPI-IMX287M的相关描述。
- 2023-02-22
支持Jetpack5.1
- 2022-12-11
增加MV-MIPI-IMX264M的相关描述。
- 2022-10-14
增加MV-MIPI-IMX296M和MV-MIPI-IMX265M的相关描述。
- 2022-08-31
支持Jetpack5.0.2
- 2022-06-23
增加ADP-N4的相关描述
- 2022-05-20
第一个发布版本