Difference between revisions of "VEYE MIPI 290/327 for Raspberry Pi/zh"

From wiki_veye
Jump to navigation Jump to search
 
(79 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''<big>VEYE-MIPI-290/327 摄像头模组接入树莓派使用说明</big>'''
+
[[VEYE-MIPI-290/327 for Raspberry Pi|English]]
 +
 
 +
'''<big><big><big><big>[[VEYE MIPI 290/327 for Raspberry Pi/zh|如何在树莓派平台使用VEYE-MIPI-X系列摄像头模组(legacy mode)]]</big></big></big></big>'''
  
 
===概述===
 
===概述===
VEYE-MIPI-290/327 摄像头模组理论上支持树莓派的所有型号,出于性能最优考虑,建议使用树莓派3以后的版本。本篇文章以树莓派3B为例讲解VEYE-MIPI-290/327 摄像头模组接入树莓派经典版型以及树莓派Computer Module与树莓派Zero步骤及使用说明。
+
VEYE-MIPI-X系列摄像头模组,包括VEYE-MIPI-327E,VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385。摄像头模组理论上支持树莓派的所有型号,出于性能最优考虑,建议使用树莓派3以后的版本。本篇文章以树莓派3B为例讲解VEYE-MIPI-X摄像头模组接入树莓派的方法。此外介绍了接入树莓派Computer Module与树莓派Zero特殊之处。
 +
 
 +
=== 关于piOS版本---Bullseye ===
 +
The latest system of Raspberry Pi - bullseye has removed the support of raspicam by default. But we still have 2 ways to use it.
 +
 
 +
最新版本的piOS——Bullseye默认去掉了raspicam的支持。但是我们依然有两种方法来使用。
 +
 
 +
* 1, 使用 legacy 版本的 piOS,也就是说,不升级到Bullseye。
 +
 
 +
https://www.raspberrypi.com/software/operating-systems/
 +
 
 +
* 2, 在Bullseye版本上,打开Open legacy camera的支持。我们已经升级了程序以适应这种应用。
 +
 
 +
<blockquote><u>If you want to add the legacy camera interfaces to Bullseye, please click your update icon in the taskbar to update. Then open a terminal (Ctrl-Alt-T) and type ‘sudo raspi-config’, go to ‘Interface Options’ and then ‘Legacy Camera’, and reboot. These camera interfaces are deprecated, and we are not supporting them going forwards.</u></blockquote>https://www.raspberrypi.com/news/new-old-functionality-with-raspberry-pi-os-legacy/
 +
 
 +
使用如下命令查看当前系统版本:
  
 +
<code>lsb_release -a</code>
 
===硬件准备及安装===
 
===硬件准备及安装===
原材料:树莓派3B,网线,Micro SD卡,树莓派电源线,HDMI显示器,FFC线,杜邦线,镜头,摄像头主板,转接板。(转接板包括mini转接板与增强版转接板,其中mini转接板用来对接树莓派标准版型,增强版转接板可以额外用来对接Computer Module系列和Zero系列版型,两种版本详情请见[[链接]])
+
原材料:树莓派3B,网线,Micro SD卡,树莓派电源线,HDMI显示器,FFC线,杜邦线,镜头,摄像头主板,转接板。(树莓派转接板包括mini转接板与增强版转接板,其中mini转接板用来对接树莓派标准版型,增强版转接板可以额外用来对接Computer Module系列和Zero系列版型,两种版本详情请见[http://wiki.veye.cc/index.php/Mini_Adapter_Board/zh Mini Adapter Board]与[http://wiki.veye.cc/index.php/Adapter_Board_for_Raspberry_Pi/zh Adapter Board])
 +
 
 +
*如图所示,摄像头主板连接mini转接板,mini转接板通过FFC异面线及图中的杜邦黑红线连接到树莓派上,黑线连接GND接口,红线连接5V接口。
 +
 
 +
*树莓派接好摄像头模组后,将烧录好树莓派系统的MicroSD卡插入卡槽,网线插入网线接口,HDMI显示器接入树莓派,电源线插入power接口,为树莓派接通电源。
  
*如图所示,摄像头主板连接mini转接板,mini转接板通过FFC及图中的杜邦黑白线连接到树莓派上,黑线连接GND接口,白线连接5V接口(因为摄像头板功耗较大,需要额外的5V供电)。
+
==== 供电模式 ====
  
[[File:Raspberrypi connect veye.png|thumb|603x603px|树莓派与摄像头模组连接示意图|alt=|center]]
+
'''VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385均支持杜邦线5V供电和FFC排线供电,并可以自动适应模式。'''
 +
{| class="wikitable"
 +
!VEYE-MIPI-IMX327S与树莓派接线图
 +
VEYE-MIPI-IMX462与树莓派接线图
  
*树莓派接好摄像头模组后,将烧录好树莓派系统的Micro SD卡插入卡槽,网线插入网线接口,HDMI显示器接入树莓派,电源线插入power接口,为树莓派接通电源。
+
VEYE-MIPI-IMX385与树莓派接线图
 +
!VEYE-MIPI-IMX327S FPC连接方式
 +
VEYE-MIPI-IMX462 FPC连接方式
 +
 
 +
VEYE-MIPI-IMX385 FPC连接方式
 +
|-
 +
|[[File:RaspberryPi 3B+ -VEYE-MIPI-IMS327S 01.jpg|alt=|center|thumb|400x400px]]
 +
|[[File:RaspberryPi 3B+ -VEYE-MIPI-IMS327S 02.jpg|alt=|center|thumb|400x400px]]
 +
|}
 +
<br />
 +
{| class="wikitable"
 +
!VEYE-MIPI-327E与树莓派接线图
 +
!VEYE-MIPI-327E FPC连接方式
 +
|-
 +
|[[File:ADP-E 001.jpg|alt=|center|thumb|400x400px]]
 +
|[[File:ADP-E 003.jpg|alt=|center|thumb|400x400px]]
 +
|}
 +
<br />
 +
{| class="wikitable"
 +
!树莓派与摄像头模组VEYE-MIPI-327B连接示意图
 +
!摄像头模组VEYE-MIPI-327B插接示意图
 +
|-
 +
|[[File:Veye-raspberry 3m.jpg|center|thumb|400x400px|alt=]]
 +
|[[File:Veye 290-327Wiring scheme00.jpg|center|thumb|400x400px|alt=]]
 +
|}
  
 
===树莓派系统安装及配置===
 
===树莓派系统安装及配置===
Line 19: Line 68:
  
 
<code>sudo raspi-config</code>   
 
<code>sudo raspi-config</code>   
[[File:Veye-Raspi-config.png|thumb|如图所示|alt=|center|608x608px]]
+
[[File:Veye-Raspi-config.png|thumb|alt=|center|608x608px]]
  
 
进入选项5,启用Camera 和 I2C,然后重启。
 
进入选项5,启用Camera 和 I2C,然后重启。
Line 27: Line 76:
 
===软件包下载与介绍===
 
===软件包下载与介绍===
  
==== 下载及传输树莓派 ====
+
====有两种方式下载及传输软件包到树莓派====
  
 
*执行命令行
 
*执行命令行
  
<code>git clone <nowiki>https://github.com/veyeimaging/raspberrypi</nowiki></code>
+
<code>git clone <nowiki>https://github.com/veyeimaging/raspberrypi.git</nowiki></code>
  
 
直接将文件复制到树莓派系统中。
 
直接将文件复制到树莓派系统中。
Line 37: Line 86:
 
*点击[https://github.com/veyeimaging/raspberrypi 链接]下载软件包
 
*点击[https://github.com/veyeimaging/raspberrypi 链接]下载软件包
  
[[File:Veye 123.png|center|thumb|626x626px|i2c_cmd为视频控制接口软件包,veye_raspcam为视频流接口软件包]]
+
利用samba将软件包文件传输至树莓派系统中,也可用U盘将软件包文件拷贝至树莓派系统中。
  
 +
====软件包介绍====
 +
[[File:Rpi github overview.jpg|alt=|center|thumb|626x626px|github 软件包概览]]
  
利用samba将软件包文件传输至树莓派系统中,也可用U盘将软件包文件拷贝至树莓派系统中。
+
*软件包包括视频流软件包和视频控制软件包。i2c_cmd为视频控制接口软件包。视频流接口软件包有两个,veye_raspcam为raspcam type工具集。D_mipi_rpi为D-SDK软件包,提供了C语言的SDK并由C语言和python语言的demo。
 +
 
 +
*视频流软件包提供实时显示、抓拍、录像等功能,视频控制软件包通过I2C协议控制摄像机模组,提供主要的ISP参数配置等功能。
  
==== 软件包介绍 ====
+
这两部分都是开源的。
  
* 软件包包括视频流接口软件包和视频控制接口软件包。其中i2c_cmd为视频控制接口软件包,veye_raspcam为视频流接口软件包。
+
===视频流软件包使用===
  
* 视频流接口软件包提供实时显示、抓拍、录像等功能,视频控制接口软件包通过I2C协议控制摄像机模组,提供主要的ISP参数配置等功能。
+
====raspicam type工具集====
 +
首先增加可执行权限
  
这两部分都是开源的。
+
<code>cd raspberrypi/veye_raspcam/bin/</code>
  
===视频流接口软件包使用===
+
<code>chmod +x *</code>
视频流接口软件包各种指示命令使用方法及示例:
 
  
 
*veye_raspipreview
 
*veye_raspipreview
  
<code>./veye_raspipreview -t 20000</code>
+
<code>./veye_raspipreview -t 20000 -p '0,0,1280,720'</code>
  
实现20s(即20000毫秒)的视频实时显示到HDMI输出,可以自行调节t的大小。
+
实现20s(即20000毫秒)的视频实时显示到HDMI输出,输出窗口为1280*720,可以自行调节t的大小和输出窗口。
  
 
<code>./veye_raspipreview -t -1</code>
 
<code>./veye_raspipreview -t -1</code>
  
将t调节成 -1  ,可以实现视频持续输出显示到HDMI输出。
+
将t调节成 -1  ,可以实现视频持续输出显示到HDMI输出,全屏显示。
  
*veye_raspivid
+
*veye_raspivid 录像
  
 
<code>./veye_raspivid -t 5000 -o ~/test.h264</code>  
 
<code>./veye_raspivid -t 5000 -o ~/test.h264</code>  
  
 
实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。
 
实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。
 +
 +
与此同时,实现视频实时显示到HDMI输出。(如不需要preview功能,可以添加 ''-n'' 选项)
 +
 +
*veye_raspivid 网络传输(gstreamer tcp)
 +
 +
'''''树莓派一侧执行'''''
 +
 +
<code>./veye_raspivid -b 4000000 -t 0 -o -  | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=x.x.x.x port=5000</code>
 +
 +
码流带宽为4Mbps,持续传输,监听端口为5000。
 +
 +
电脑一侧,如为windows系统,建议使用powershell。
 +
 +
'''''电脑一侧使用gstreamer'''''
 +
 +
<code>gst-launch-1.0 -v tcpclientsrc host=x.x.x.x port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false</code>
 +
 +
其中x.x.x.x为树莓派的IP地址
 +
 +
gstreamer的windows版本下载地址。只安装runtime files即可。
 +
 +
*veye_raspivid 网络传输(gstreamer udp)
 +
 +
电脑一侧,如为windows系统,建议使用powershell。
 +
 +
'''''电脑一侧使用gstreamer'''''
 +
 +
<code>gst-launch-1.0.exe -v udpsrc port=5321 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false</code>
 +
 +
'''''树莓派一侧执行'''''
 +
 +
<code>./veye_raspivid -b 4000000 -t 0 -o -  | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! udpsink host=x.x.x.x port=5000 sync=false</code>
 +
 +
码流带宽为4Mbps,持续传输,监听端口为5000。
 +
 +
其中x.x.x.x为HOST PC的IP地址,需要先运行pc端程序,再运行树莓派端程序。
 +
 +
*veye_raspivid 网络传输(direct tcp stream with netcat)
 +
 +
'''''树莓派一侧执行'''''
 +
 +
<code>./veye_raspivid -b 4000000 -t 0 -o - | nc -l -p 5000</code>
 +
 +
码流带宽为4Mbps,持续传输,监听端口为5000。
 +
 +
电脑一侧,如为windows系统,建议使用powershell。
 +
 +
'''''电脑一侧使用gstreamer'''''
 +
 +
<code>./gst-launch-1.0 -v tcpclientsrc host=x.x.x.x port=5000 ! decodebin ! autovideosink</code>
 +
 +
'''''电脑一侧使用mplayer'''''
 +
 +
<code>./mplayer -x 1280 -y 720 -geometry 0:0 -fps 200 -demuxer h264es -noborder ffmpeg://tcp://x.x.x.x:5000</code>
 +
 +
其中x.x.x.x为树莓派的IP地址
 +
 +
mplayer for windows [http://mplayerwin.sourceforge.net/downloads.html 下载地址]。
  
 
*veye_raspividyuv
 
*veye_raspividyuv
Line 73: Line 184:
 
<code>./veye_raspividyuv -t 200 -o /dev/shm/test.yuv</code>  
 
<code>./veye_raspividyuv -t 200 -o /dev/shm/test.yuv</code>  
  
实现录像yuv格式数据200ms,录像文件保存到/dev/shm/test.yuv,存储格式为yuv420 I420 格式。可以自行调节t的大小来选择录制时间的长短。
+
实现录像yuv格式数据200ms,录像文件保存到/dev/shm/test.yuv,存储格式为YUV420 I420 格式。可以自行调节t的大小来选择录制时间的长短。
  
 
*veye_raspiraw
 
*veye_raspiraw
Line 80: Line 191:
  
 
实现抓拍200ms的图片存储到/dev/shm目录(内存文件系统),然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。UYVY格式。
 
实现抓拍200ms的图片存储到/dev/shm目录(内存文件系统),然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。UYVY格式。
 +
 +
*veye_raspstillyuv
 +
 +
<code>./veye_raspistillyuv -o /dev/shm/test.yuv</code>
 +
 +
实现抓拍一张图片存储到/dev/shm目录(内存文件系统),然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。存储格式为YUV420 I420 格式。
 +
 +
<code>./veye_raspistillyuv -tl 50 -t 1000 -o /dev/shm/test%d.yuv</code>
 +
 +
实现间隔50ms抓拍一张图片存储到/dev/shm目录(内存文件系统),持续1秒,然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。存储格式为YUV420 I420 格式。
  
 
*veye_raspistill
 
*veye_raspistill
  
抓拍一张并压缩为jpeg,开发中。
+
<code>./veye_raspistill -o ~/test.jpg</code>
 +
 
 +
实现抓拍一张图片并保存,文件格式为jpg。
 +
 
 +
<code>./veye_raspistill -e bmp -tl 50 -t 1000  -o /dev/shm/test%d.bmp</code>
 +
 
 +
实现间隔50ms抓拍一张bmp图片存储到/dev/shm目录(内存文件系统),持续1秒,然后客户可以导出并查看。
 +
 
 +
<code>./veye_raspistill -k -o ~/test%d.jpg -t 0</code>
 +
 
 +
实现视频预览,同时通过键盘控制抓拍,Enter键抓拍一张,X Enter退出。
 +
 
 +
veye_raspistill命令支持preview,-n可以取消preview。
 +
 
 +
====D-SDK软件包====
 +
提供了一个C语言的SDK库libdmipicam.so,以及基于这个库的C语言sample和python语言sample。
 +
 
 +
=====安装底层支持库=====
 +
<code>sudo apt-get update && sudo apt-get install libopencv-dev</code>
 +
 
 +
<code><s>sudo apt-get install python-opencv</s></code>
 +
 
 +
<code>sudo apt-get install python3-opencv</code>
 +
 
 +
<code>sudo apt-get install  libzbar-dev</code>
 +
 
 +
=====SDK=====
 +
 
 +
*接口:
 +
 
 +
开放源码,详见D_mipicam.h
 +
 
 +
*编译:
 +
 
 +
<code>./buildme</code>
 +
 
 +
*安装:
 +
 
 +
<code>sudo install -m 644 ./libdmipicam.so /usr/lib/</code>
 +
 
 +
=====C sample=====
 +
 
 +
*preview
 +
 
 +
实现实时视频预览
 +
 
 +
*preview-dualcam
 +
 
 +
实现两路摄像头同时视频预览(RPI CM)
 +
 
 +
*video
 +
 
 +
视频压缩为H.264并保存为文件
 +
 
 +
*capture
 +
 
 +
抓拍一张jpeg图片
 +
 
 +
*video2stdout
 +
 
 +
视频压缩并输出到stdout为管道应用服务,如下命令,可达到与veye_raspivid命令类似的效果。
 +
 
 +
<code>./video2stdout | nc -l -p 5000</code>
 +
 
 +
*capture_yuv
 +
 
 +
抓拍一张YUV图片
 +
 
 +
*capture-dualcam
 +
 
 +
两路摄像头同时抓拍jpeg图片
 +
 
 +
*yuv_stream
 +
 
 +
导出yuv格式的原始数据
 +
 
 +
*capture2opencv
 +
 
 +
连续获取YUV数据并转为opencv格式,显示。
 +
 
 +
*qrcode_detection
 +
 
 +
连续抓拍YUV数据并转为opencv格式,显示,并进行二维码检测。
 +
 
 +
=====Python sample=====
 +
 
 +
*preview.py
 +
 
 +
实现实时视频预览
 +
 
 +
*capture.py
 +
 
 +
抓拍一张jpeg图片
 +
 
 +
*capture_yuv.py
 +
 
 +
抓拍一张yuv图片
 +
 
 +
*video.py
 +
 
 +
视频压缩为H.264并保存为文件
 +
 
 +
*capture2opencv.py
  
===视频控制接口软件包使用===
+
连续获取YUV数据并转为opencv格式,显示。
由于树莓派的I2C-0作为GPU所用,为了避免冲突,我们使用I2C-1作为控制总线。我们提供了一个脚本camera_i2c_config进行总线的管脚复用配置。在树莓派3b/3b+,树莓派CM3b/3b+等设备上,使用I2C总线1控制VEYE模组的参数。
+
===视频控制软件包使用===
 +
视频控制软件包实际上是一个i2c命令的shell脚本,在i2c_cmd目录下。
  
具体使用说明请见:[http://wiki.veye.cc/index.php/VEYE-MIPI-290/327/zh/i2c I2C脚本使用说明]
+
我们提供了一个脚本camera_i2c_config进行总线的管脚复用配置。
===关于树莓派Computer Module 和树莓派Zero使用说明===
+
 
 +
具体使用说明请见:[[VEYE-MIPI-290/327/zh/i2c|I2C脚本使用说明]]
 +
===关于树莓派Computer Module 和树莓派Zero使用的补充说明===
  
 
====概述====
 
====概述====
树莓派Computer Module 和树莓派Zero与树莓派经典版型有所不同,故需要使用增强版转接板来连接摄像头主板。下面以树莓派Computer Module与VEYE-MIPI-290/327 摄像头模组的连接使用来进行说明。
+
树莓派Computer Module 和树莓派Zero的MIPI CSI-2 接口为22pin,对于VEYE-MIPI-327E,可直连,其他型号使用15转22pin的FPC线连接。硬件连接方法与树莓派经典版本不同,软件使用方法与上类似。
  
注:我们使用的是深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板。
+
注:对于CM3,我们使用的是深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板。树莓派官方CMIO板用法与此类似。
 +
 
 +
对于CM4,我们使用的是官方CMIO底板。
 
====硬件连接====
 
====硬件连接====
  
*摄像头主板加增强版转接板构成摄像头模组,摄像头模组通过FFC线及杜邦黑红线连接到Computer Module(黑线连接GND接口,红线连接5V接口),Computer Module可同时连接两个摄像头模组,CAM1和CAM0分别连接一个摄像头模组。 使用我们提供的树莓派增强款套装,连接camera模组到CMIO底板。  当使用CAM1时: Attach CD1_SDA (J6 pin 37) to GPIO2 (J5 pin 5)Attach CD1_SCL (J6 pin 39) to GPIO3 (J5 pin 7).  当使用CAM0时: Attach CD0_SDA (J6 pin 45) to GPIO44 .  Attach CD0_SCL (J6 pin 47) to GPIO45 .如图所示。
+
=====CM3连接=====
 +
树莓派官方CMIO板接线方法请参见[https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md 链接]。
 +
 
 +
我们使用的深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板接线方法如下:
 +
 
 +
*当使用CAM1时:
 +
 
 +
连接 CD1_SDA到 GPIO2 .   
 +
 
 +
连接 CD1_SCL GPIO3 .   
 +
 
 +
*当使用CAM0时:
  
[[File:Veye computer.jpg|center|thumb|603x603px|alt=|Computer Module与摄像头模组连接示意图]]
+
连接 CD0_SDA 到 GPIO44 .
  
*利用USB网线转换器帮助Computer Module 连接网络,电源线连接power接口提供电源,HDMI接口接入显示器。
+
连接 CD0_SCL  到 GPIO45 .
  
 +
如图所示
 +
[[File:Adpter with VEYE-MIPI-290-327 front.jpg|center|thumb|树莓派增强款正面图|alt=|600x600px]]
 +
[[File:Adpter with VEYE-MIPI-290-327 back.jpg|center|thumb|树莓派增强款背面图|alt=|600x600px]]
 +
<br />
 +
[[File:Veye-computer module.jpg|center|thumb|600x600px|树莓派Computer Module与摄像头模组连接示意图|alt=]]
 +
[[File:Veye computermodule Wiring scheme00.jpg|center|thumb|600x600px|摄像头模组插接示意图|alt=]]
 +
[[File:Veye computer moduleWiring scheme01.jpg|center|thumb|600x600px|树莓派Computer Module 主板插接示意图|alt=]]
 +
<br />利用USB网线转换器帮助Computer Module 连接网络,HDMI接口接入显示器,电源线连接power接口提供电源。
 +
 +
===== CM4接口连接 =====
 +
[[File:Raspberry Pi CM4 system connect.jpg|center|thumb|800x800px|Raspberry Pi CM4 system connec]]
 +
<br />
 
====树莓派Computer Module系统安装====
 
====树莓派Computer Module系统安装====
具体方法请参见官方说明[http://www.waveshare.net/w/upload/4/46/Compute_Module_IO_Board_PLUS_User_Manual.pdf 用户手册]第七页。
+
树莓派官方CMIO板安装树莓派系统方法请参见[https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md 链接]
  
====视频流接口软件包使用说明====
+
我们所用的深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板安装树莓派系统具体方法请参见官方说明[http://www.waveshare.net/w/upload/4/46/Compute_Module_IO_Board_PLUS_User_Manual.pdf 用户手册]第七页。
 +
 
 +
====视频流软件包使用====
 
选项 -cs 0/1 可以支持同时连接两路camera到CM3,0 表示接到CAM0,1表示接到CAM1,其余选项见[http://wiki.veye.cc/index.php/Veye_290_rapberry#.E8.A7.86.E9.A2.91.E6.B5.81.E6.8E.A5.E5.8F.A3.E8.BD.AF.E4.BB.B6.E5.8C.85.E5.90.84.E7.A7.8D.E6.8C.87.E7.A4.BA.E5.91.BD.E4.BB.A4.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95.E5.8F.8A.E7.A4.BA.E4.BE.8B.EF.BC.9A 4.2]。示例如下:
 
选项 -cs 0/1 可以支持同时连接两路camera到CM3,0 表示接到CAM0,1表示接到CAM1,其余选项见[http://wiki.veye.cc/index.php/Veye_290_rapberry#.E8.A7.86.E9.A2.91.E6.B5.81.E6.8E.A5.E5.8F.A3.E8.BD.AF.E4.BB.B6.E5.8C.85.E5.90.84.E7.A7.8D.E6.8C.87.E7.A4.BA.E5.91.BD.E4.BB.A4.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95.E5.8F.8A.E7.A4.BA.E4.BE.8B.EF.BC.9A 4.2]。示例如下:
  
Line 121: Line 374:
 
利用CAM1所连接的摄像头实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。
 
利用CAM1所连接的摄像头实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。
  
====视频控制接口软件包使用====
+
====视频控制软件包使用====
选项 -b 0/1 可以支持同时连接两路camera到CM3,0 表示接到CAM0,1表示接到CAM1,其余选项具体使用说明详见:[http://wiki.veye.cc/index.php/VEYE-MIPI-290/327/zh/i2c I2C脚本使用说明]<br />
+
点击[https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.bin 链接]下载dt-blob-dualcam.bin,改名为dt-blob.bin文件,将文件放在/boot下,然后执行命令:
 +
 
 +
其余选项具体使用说明详见:[http://wiki.veye.cc/index.php/VEYE-MIPI-290/327/zh/i2c I2C脚本使用说明]
 +
===FFC线备注===
 +
树莓派经典版型硬件连接所使用的为FFC异面线,如右图所示
 +
 
 +
树莓派Computer Module硬件连接所使用的为FFC同面线,如右图所示
 +
<br />[[File:Veye Base Adapter FFC.jpg|thumb|600x600px|FFC异面线|alt=|center]]
 +
[[File:Veye Computer Module 3 IO BRD V3 FFC同面.jpg|thumb|600x600px|FFC同面线|alt=|center]]

Latest revision as of 15:47, 10 January 2023

English

如何在树莓派平台使用VEYE-MIPI-X系列摄像头模组(legacy mode)

1 概述

VEYE-MIPI-X系列摄像头模组,包括VEYE-MIPI-327E,VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385。摄像头模组理论上支持树莓派的所有型号,出于性能最优考虑,建议使用树莓派3以后的版本。本篇文章以树莓派3B为例讲解VEYE-MIPI-X摄像头模组接入树莓派的方法。此外介绍了接入树莓派Computer Module与树莓派Zero特殊之处。

2 关于piOS版本---Bullseye

The latest system of Raspberry Pi - bullseye has removed the support of raspicam by default. But we still have 2 ways to use it.

最新版本的piOS——Bullseye默认去掉了raspicam的支持。但是我们依然有两种方法来使用。

  • 1, 使用 legacy 版本的 piOS,也就是说,不升级到Bullseye。

https://www.raspberrypi.com/software/operating-systems/

  • 2, 在Bullseye版本上,打开Open legacy camera的支持。我们已经升级了程序以适应这种应用。

If you want to add the legacy camera interfaces to Bullseye, please click your update icon in the taskbar to update. Then open a terminal (Ctrl-Alt-T) and type ‘sudo raspi-config’, go to ‘Interface Options’ and then ‘Legacy Camera’, and reboot. These camera interfaces are deprecated, and we are not supporting them going forwards.

https://www.raspberrypi.com/news/new-old-functionality-with-raspberry-pi-os-legacy/

使用如下命令查看当前系统版本:

lsb_release -a

3 硬件准备及安装

原材料:树莓派3B,网线,Micro SD卡,树莓派电源线,HDMI显示器,FFC线,杜邦线,镜头,摄像头主板,转接板。(树莓派转接板包括mini转接板与增强版转接板,其中mini转接板用来对接树莓派标准版型,增强版转接板可以额外用来对接Computer Module系列和Zero系列版型,两种版本详情请见Mini Adapter BoardAdapter Board

  • 如图所示,摄像头主板连接mini转接板,mini转接板通过FFC异面线及图中的杜邦黑红线连接到树莓派上,黑线连接GND接口,红线连接5V接口。
  • 树莓派接好摄像头模组后,将烧录好树莓派系统的MicroSD卡插入卡槽,网线插入网线接口,HDMI显示器接入树莓派,电源线插入power接口,为树莓派接通电源。

3.1 供电模式

VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385均支持杜邦线5V供电和FFC排线供电,并可以自动适应模式。

VEYE-MIPI-IMX327S与树莓派接线图

VEYE-MIPI-IMX462与树莓派接线图

VEYE-MIPI-IMX385与树莓派接线图

VEYE-MIPI-IMX327S FPC连接方式

VEYE-MIPI-IMX462 FPC连接方式

VEYE-MIPI-IMX385 FPC连接方式


VEYE-MIPI-327E与树莓派接线图 VEYE-MIPI-327E FPC连接方式


树莓派与摄像头模组VEYE-MIPI-327B连接示意图 摄像头模组VEYE-MIPI-327B插接示意图

4 树莓派系统安装及配置

具体安装树莓派系统方法请参考官方文档,详见:Install raspberrypi guide

接通电源后,树莓派系统启动,初始树莓派系统中Camera 和 I2C都处于未启用状态。开机后我们需要将其手动打开,执行命令

sudo raspi-config

进入选项5,启用Camera 和 I2C,然后重启。

建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。

5 软件包下载与介绍

5.1 有两种方式下载及传输软件包到树莓派

  • 执行命令行

git clone https://github.com/veyeimaging/raspberrypi.git

直接将文件复制到树莓派系统中。

利用samba将软件包文件传输至树莓派系统中,也可用U盘将软件包文件拷贝至树莓派系统中。

5.2 软件包介绍

github 软件包概览
  • 软件包包括视频流软件包和视频控制软件包。i2c_cmd为视频控制接口软件包。视频流接口软件包有两个,veye_raspcam为raspcam type工具集。D_mipi_rpi为D-SDK软件包,提供了C语言的SDK并由C语言和python语言的demo。
  • 视频流软件包提供实时显示、抓拍、录像等功能,视频控制软件包通过I2C协议控制摄像机模组,提供主要的ISP参数配置等功能。

这两部分都是开源的。

6 视频流软件包使用

6.1 raspicam type工具集

首先增加可执行权限

cd raspberrypi/veye_raspcam/bin/

chmod +x *

  • veye_raspipreview

./veye_raspipreview -t 20000 -p '0,0,1280,720'

实现20s(即20000毫秒)的视频实时显示到HDMI输出,输出窗口为1280*720,可以自行调节t的大小和输出窗口。

./veye_raspipreview -t -1

将t调节成 -1 ,可以实现视频持续输出显示到HDMI输出,全屏显示。

  • veye_raspivid 录像

./veye_raspivid -t 5000 -o ~/test.h264

实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。

与此同时,实现视频实时显示到HDMI输出。(如不需要preview功能,可以添加 -n 选项)

  • veye_raspivid 网络传输(gstreamer tcp)

树莓派一侧执行

./veye_raspivid -b 4000000 -t 0 -o -  | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=x.x.x.x port=5000

码流带宽为4Mbps,持续传输,监听端口为5000。

电脑一侧,如为windows系统,建议使用powershell。

电脑一侧使用gstreamer

gst-launch-1.0 -v tcpclientsrc host=x.x.x.x port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false

其中x.x.x.x为树莓派的IP地址

gstreamer的windows版本下载地址。只安装runtime files即可。

  • veye_raspivid 网络传输(gstreamer udp)

电脑一侧,如为windows系统,建议使用powershell。

电脑一侧使用gstreamer

gst-launch-1.0.exe -v udpsrc port=5321 ! gdpdepay ! rtph264depay ! avdec_h264 ! autovideosink sync=false

树莓派一侧执行

./veye_raspivid -b 4000000 -t 0 -o -  | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! udpsink host=x.x.x.x port=5000 sync=false

码流带宽为4Mbps,持续传输,监听端口为5000。

其中x.x.x.x为HOST PC的IP地址,需要先运行pc端程序,再运行树莓派端程序。

  • veye_raspivid 网络传输(direct tcp stream with netcat)

树莓派一侧执行

./veye_raspivid -b 4000000 -t 0 -o - | nc -l -p 5000

码流带宽为4Mbps,持续传输,监听端口为5000。

电脑一侧,如为windows系统,建议使用powershell。

电脑一侧使用gstreamer

./gst-launch-1.0 -v tcpclientsrc host=x.x.x.x port=5000 ! decodebin ! autovideosink

电脑一侧使用mplayer

./mplayer -x 1280 -y 720 -geometry 0:0 -fps 200 -demuxer h264es -noborder ffmpeg://tcp://x.x.x.x:5000

其中x.x.x.x为树莓派的IP地址

mplayer for windows 下载地址

  • veye_raspividyuv

./veye_raspividyuv -t 200 -o /dev/shm/test.yuv

实现录像yuv格式数据200ms,录像文件保存到/dev/shm/test.yuv,存储格式为YUV420 I420 格式。可以自行调节t的大小来选择录制时间的长短。

  • veye_raspiraw

./veye_raspiraw -md 2 -t 200 -o /dev/shm/out.%04d.yuv

实现抓拍200ms的图片存储到/dev/shm目录(内存文件系统),然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。UYVY格式。

  • veye_raspstillyuv

./veye_raspistillyuv -o /dev/shm/test.yuv

实现抓拍一张图片存储到/dev/shm目录(内存文件系统),然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。存储格式为YUV420 I420 格式。

./veye_raspistillyuv -tl 50 -t 1000 -o /dev/shm/test%d.yuv

实现间隔50ms抓拍一张图片存储到/dev/shm目录(内存文件系统),持续1秒,然后客户可以导出并查看。文件格式为1920*1080大小的yuv数据。存储格式为YUV420 I420 格式。

  • veye_raspistill

./veye_raspistill -o ~/test.jpg

实现抓拍一张图片并保存,文件格式为jpg。

./veye_raspistill -e bmp -tl 50 -t 1000  -o /dev/shm/test%d.bmp

实现间隔50ms抓拍一张bmp图片存储到/dev/shm目录(内存文件系统),持续1秒,然后客户可以导出并查看。

./veye_raspistill -k -o ~/test%d.jpg -t 0

实现视频预览,同时通过键盘控制抓拍,Enter键抓拍一张,X Enter退出。

veye_raspistill命令支持preview,-n可以取消preview。

6.2 D-SDK软件包

提供了一个C语言的SDK库libdmipicam.so,以及基于这个库的C语言sample和python语言sample。

6.2.1 安装底层支持库

sudo apt-get update && sudo apt-get install libopencv-dev

sudo apt-get install python-opencv

sudo apt-get install python3-opencv

sudo apt-get install  libzbar-dev

6.2.2 SDK
  • 接口:

开放源码,详见D_mipicam.h

  • 编译:

./buildme

  • 安装:

sudo install -m 644 ./libdmipicam.so /usr/lib/

6.2.3 C sample
  • preview

实现实时视频预览

  • preview-dualcam

实现两路摄像头同时视频预览(RPI CM)

  • video

视频压缩为H.264并保存为文件

  • capture

抓拍一张jpeg图片

  • video2stdout

视频压缩并输出到stdout为管道应用服务,如下命令,可达到与veye_raspivid命令类似的效果。

./video2stdout | nc -l -p 5000

  • capture_yuv

抓拍一张YUV图片

  • capture-dualcam

两路摄像头同时抓拍jpeg图片

  • yuv_stream

导出yuv格式的原始数据

  • capture2opencv

连续获取YUV数据并转为opencv格式,显示。

  • qrcode_detection

连续抓拍YUV数据并转为opencv格式,显示,并进行二维码检测。

6.2.4 Python sample
  • preview.py

实现实时视频预览

  • capture.py

抓拍一张jpeg图片

  • capture_yuv.py

抓拍一张yuv图片

  • video.py

视频压缩为H.264并保存为文件

  • capture2opencv.py

连续获取YUV数据并转为opencv格式,显示。

7 视频控制软件包使用

视频控制软件包实际上是一个i2c命令的shell脚本,在i2c_cmd目录下。

我们提供了一个脚本camera_i2c_config进行总线的管脚复用配置。

具体使用说明请见:I2C脚本使用说明

8 关于树莓派Computer Module 和树莓派Zero使用的补充说明

8.1 概述

树莓派Computer Module 和树莓派Zero的MIPI CSI-2 接口为22pin,对于VEYE-MIPI-327E,可直连,其他型号使用15转22pin的FPC线连接。硬件连接方法与树莓派经典版本不同,软件使用方法与上类似。

注:对于CM3,我们使用的是深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板。树莓派官方CMIO板用法与此类似。

对于CM4,我们使用的是官方CMIO底板。

8.2 硬件连接

8.2.1 CM3连接

树莓派官方CMIO板接线方法请参见链接

我们使用的深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板接线方法如下:

  • 当使用CAM1时:

连接 CD1_SDA到 GPIO2 .

连接 CD1_SCL 到 GPIO3 .

  • 当使用CAM0时:

连接 CD0_SDA 到 GPIO44 .

连接 CD0_SCL 到 GPIO45 .

如图所示

树莓派增强款正面图
树莓派增强款背面图


树莓派Computer Module与摄像头模组连接示意图
摄像头模组插接示意图
树莓派Computer Module 主板插接示意图


利用USB网线转换器帮助Computer Module 连接网络,HDMI接口接入显示器,电源线连接power接口提供电源。

8.2.2 CM4接口连接
Raspberry Pi CM4 system connec


8.3 树莓派Computer Module系统安装

树莓派官方CMIO板安装树莓派系统方法请参见链接

我们所用的深圳市微雪电子有限公司生产的Computer Module IO Board Plus for raspberry pi 底板安装树莓派系统具体方法请参见官方说明用户手册第七页。

8.4 视频流软件包使用

选项 -cs 0/1 可以支持同时连接两路camera到CM3,0 表示接到CAM0,1表示接到CAM1,其余选项见4.2。示例如下:

  • veye_raspipreview

./veye_raspipreview -cs 0 -t 20000

利用CAM0所连接的摄像头实现20s(即20000毫秒)的视频实时显示到HDMI输出,可以自行调节t的大小。

  • veye_raspivid

./veye_raspivid -cs 1 -t 5000 -o ~/test.h264

利用CAM1所连接的摄像头实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。

8.5 视频控制软件包使用

点击链接下载dt-blob-dualcam.bin,改名为dt-blob.bin文件,将文件放在/boot下,然后执行命令:

其余选项具体使用说明详见:I2C脚本使用说明

9 FFC线备注

树莓派经典版型硬件连接所使用的为FFC异面线,如右图所示

树莓派Computer Module硬件连接所使用的为FFC同面线,如右图所示


FFC异面线
FFC同面线