Difference between revisions of "Mv series camera appnotes 4 rpi/zh"
(→配置触发源) |
|||
Line 90: | Line 90: | ||
<code>sudo ./uninstall_driver.sh veye_mvcam</code> | <code>sudo ./uninstall_driver.sh veye_mvcam</code> | ||
====摄像头状态验证==== | ====摄像头状态验证==== | ||
− | + | 以MV-MIPI-IMX178M为例: | |
<code>dmesg | grep mvcam</code> | <code>dmesg | grep mvcam</code> | ||
Line 96: | Line 96: | ||
可以看到linux启动阶段probe到的相机型号和版本号: | 可以看到linux启动阶段probe到的相机型号和版本号: | ||
− | <code>camera is: | + | <code>camera is: MV-MIPI-IMX178M</code> |
<code>firmware version: 0x1080102</code> | <code>firmware version: 0x1080102</code> | ||
并且/dev/video0 节点存在,证明摄像头状态正常。 | 并且/dev/video0 节点存在,证明摄像头状态正常。 | ||
− | |||
====v4l2-ctl 应用范例==== | ====v4l2-ctl 应用范例==== | ||
=====安装v4l2-utils===== | =====安装v4l2-utils===== | ||
Line 200: | Line 199: | ||
随分辨率的调整,最大帧率会自动更新。 | 随分辨率的调整,最大帧率会自动更新。 | ||
− | |||
− | |||
− | + | ====== 设置ROI ====== | |
+ | 举例,对于MV-MIPI-IMX178M: | ||
− | <code>v4l2-ctl --set- | + | <code>v4l2-ctl --set-selection=target=crop,top=32,left=64,width=2592,height=1944</code> |
− | + | 设置roi后,最大帧率会自动调整。<br /> | |
− | |||
===yavta 应用范例=== | ===yavta 应用范例=== | ||
====下载并编译yavta==== | ====下载并编译yavta==== |
Revision as of 17:24, 12 April 2022
1 概述
MV系列MIPI相机是为工业领域的AI应用推出的专用相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
1.1 支持的模组
系列 | 型号 | 状态 |
---|---|---|
MV系列 | MV-MIPI-IMX178M | 完成 |
2 硬件准备及安装
MV系列相机需要ADP-MV1配合即可接入树莓派。下面以MV-MIPI-IMX178M为例,介绍硬件的安装方法。
2.1 MV-MIPI-IMX178M与ADP-MV1的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
(插入图片,注意FFC排线规格及方向)
2.2 ADP-MV1与树莓派的连接
2.2.1 供电
ADP-MV1需要独立的5V供电,可以使用杜邦线直接从树莓派主板取电。
(插入图片,突出5V供电杜邦线线序)
2.2.2 树莓派Model B和Model B+
二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。
(插入图片,注意接触面方向)
2.2.3 树莓派Zero,Zero W和Computer Module
二者使用15P转22P的FFC同面线连接,注意接触面安装方向。
(插入图片,注意接触面方向)
3 piOS的配置
具体安装树莓派系统方法请参考官方文档,详见:Install raspberrypi guide。
接通电源后,树莓派系统启动,初始树莓派系统中Camera 和 I2C都处于未启用状态。开机后我们需要将其手动打开,执行命令
sudo raspi-config
进入Interface Options,启用I2C,然后重启树莓派。
建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。
4 Legacy模式和V4L2模式介绍
4.1 Legacy模式
传统模式,依赖博通的GPU进行图像处理。传统的raspicam软件集即采用此模式。此模式缺点是封闭,GPU端是闭源的,无法自由接入sensor。树莓派组织已经全面转向libcamera camera stack。
但是此模式依然有存在的价值:
- 更多的使用GPU资源,降低CPU负载。这点对于性能比较差的早期版本树莓派很有用。
- libcamera现在还缺乏一些功能支持。
- 可以简单直接的获取图像数据到应用层,无需驱动层的支持。这点对于不依赖树莓派做isp的相机尤其有用。
有两种方法可以使用Legacy模式:
- 使用Legacy版本的piOS。
- 对于bullseye版本piOS,
raspi-config
中打开Legacy Camera选项。
4.2 libcamera以及V4L2模式
现在piOS已全面切换为libcamera-stack模式。这个模式有很多的优点,在树莓派网站上有详细的介绍。
libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了V4L2模式,而不是使用libcamera-stack。
与libcamera-stack相同,我们的V4L2模式,也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。
5 V4L2模式用法
5.1 下载驱动包
git clone https://github.com/veyeimaging/raspberrypi_v4l2.git
5.2 安装驱动
cd raspberrypi_v4l2/release/
chmod +x *
sudo ./install_driver.sh veye_mvcam
然后重启树莓派。
备注:如果提示无法找到对应版本的驱动,说明我们没有提供对应您的piOS版本编译后的驱动程序。请尝试从源码编译。
5.3 卸载驱动
如需更换为Legacy模式,或者想要更换成其他摄像头模组型号的驱动,必须要先卸载现在的驱动。
sudo ./uninstall_driver.sh veye_mvcam
5.4 摄像头状态验证
以MV-MIPI-IMX178M为例:
dmesg | grep mvcam
可以看到linux启动阶段probe到的相机型号和版本号:
camera is: MV-MIPI-IMX178M
firmware version: 0x1080102
并且/dev/video0 节点存在,证明摄像头状态正常。
5.5 v4l2-ctl 应用范例
5.5.1 安装v4l2-utils
sudo apt-get install v4l-utils
5.5.2 v4l2-ctl配置参数
5.5.2.1 列出相机支持的数据格式
v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'GREY' (8-bit Greyscale)
Size: Discrete 3088x2064
[1]: 'Y10P' (10-bit Greyscale (MIPI Packed))
Size: Discrete 3088x2064
[2]: 'Y10 ' (10-bit Greyscale)
Size: Discrete 3088x2064
[3]: 'Y12P' (12-bit Greyscale (MIPI Packed))
Size: Discrete 3088x2064
[4]: 'Y12 ' (12-bit Greyscale)
Size: Discrete 3088x2064
[5]: 'UYVY' (UYVY 4:2:2)
Size: Discrete 3088x2064
需要特别说明的是,MV系列相机提供的UYVY模式仅作方便调试使用。
5.5.2.2 列出相机支持的可配置参数
v4l2-ctl -L
User Controls
horizontal_flip 0x00980914 (bool) : default=0 value=0
vertical_flip 0x00980915 (bool) : default=0 value=0
trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile
trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile
soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write
frame_rate 0x00981904 (int) : min=0 max=22 step=1 default=22 value=22 flags=volatile
可以使用下面的方法设置和获取参数。
v4l2-ctl --set-ctrl [ctrl_type]=[val]
v4l2-ctl --get-ctrl [ctrl_type]
需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明:
5.5.2.3 配置翻转
- 水平翻转
v4l2-ctl --set-ctrl horizontal_flip=1
- 垂直翻转
v4l2-ctl --set-ctrl vertical_flip=1
5.5.2.4 配置触发模式
v4l2-ctl --set-ctrl trigger_mode=[0-2]
0:流模式
1:普通触发模式
2:快速连续触发模式
5.5.2.5 配置触发源
v4l2-ctl --set-ctrl trigger_src=[0-2]
0: 软触发
1: 硬触发
5.5.2.6 软触发一次
v4l2-ctl --set-ctrl soft_trgone
5.5.2.7 设置帧率
v4l2-ctl --set-ctrl frame_rate=[1-max]
随分辨率的调整,最大帧率会自动更新。
5.5.2.8 设置ROI
举例,对于MV-MIPI-IMX178M:
v4l2-ctl --set-selection=target=crop,top=32,left=64,width=2592,height=1944
设置roi后,最大帧率会自动调整。
6 yavta 应用范例
6.1 下载并编译yavta
git clone git://git.ideasonboard.org/yavta.git
cd yavta;make
6.2 yavta 例程
./yavta -c8 -Fuyvy_1920X1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0
PS. UYVY文件可以用这个播放器: YUV Displayer Deluxe.
7 Legacy模式用法
8 i2c参数配置方法
9 从源代码编译驱动方法
请参考:树莓派平台上摄像头驱动源码编译指南。
10 参考资料
11 问题反馈
我们致力于为嵌入式平台的图像应用提供更丰富的可能性。因此,我们在嵌入式平台的软件基于开源的原则而进行。
如对我们现有软件有任何的问题、建议,欢迎提交到论坛:,或者给我们的技术人员发邮件xumm#csoneplus.com。
12 本文修改记录
- 2022-04-12
第一个版本