Difference between revisions of "VEYE MIPI 290/327 for Raspberry Pi/zh"
(→供电模式) |
|||
(58 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | '''<big>VEYE-MIPI- | + | [[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- | + | 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 | + | 原材料:树莓派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接口,为树莓派接通电源。 | ||
− | + | ==== 供电模式 ==== | |
− | + | '''VEYE-MIPI-IMX327S,VEYE-MIPI-IMX462,VEYE-MIPI-IMX385均支持杜邦线5V供电和FFC排线供电,并可以自动适应模式。''' | |
+ | {| class="wikitable" | ||
+ | !VEYE-MIPI-IMX327S与树莓派接线图 | ||
+ | VEYE-MIPI-IMX462与树莓派接线图 | ||
− | [[File: | + | VEYE-MIPI-IMX385与树莓派接线图 |
− | [[File:Veye- | + | !VEYE-MIPI-IMX327S FPC连接方式 |
− | [[File:Veye 290-327Wiring scheme00.jpg|center|thumb| | + | 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 29: | 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> |
直接将文件复制到树莓派系统中。 | 直接将文件复制到树莓派系统中。 | ||
*点击[https://github.com/veyeimaging/raspberrypi 链接]下载软件包 | *点击[https://github.com/veyeimaging/raspberrypi 链接]下载软件包 | ||
− | |||
− | |||
− | |||
利用samba将软件包文件传输至树莓派系统中,也可用U盘将软件包文件拷贝至树莓派系统中。 | 利用samba将软件包文件传输至树莓派系统中,也可用U盘将软件包文件拷贝至树莓派系统中。 | ||
====软件包介绍==== | ====软件包介绍==== | ||
+ | [[File:Rpi github overview.jpg|alt=|center|thumb|626x626px|github 软件包概览]] | ||
− | * | + | *软件包包括视频流软件包和视频控制软件包。i2c_cmd为视频控制接口软件包。视频流接口软件包有两个,veye_raspcam为raspcam type工具集。D_mipi_rpi为D-SDK软件包,提供了C语言的SDK并由C语言和python语言的demo。 |
− | * | + | *视频流软件包提供实时显示、抓拍、录像等功能,视频控制软件包通过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输出,输出窗口为1280*720,可以自行调节t的大小和输出窗口。 | |
<code>./veye_raspipreview -t -1</code> | <code>./veye_raspipreview -t -1</code> | ||
− | 将t调节成 -1 | + | 将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 75: | 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格式数据200ms,录像文件保存到/dev/shm/test.yuv,存储格式为YUV420 I420 格式。可以自行调节t的大小来选择录制时间的长短。 |
*veye_raspiraw | *veye_raspiraw | ||
Line 82: | 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 | ||
− | + | <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 |
− | ===关于树莓派Computer Module | + | |
+ | 连续获取YUV数据并转为opencv格式,显示。 | ||
+ | ===视频控制软件包使用=== | ||
+ | 视频控制软件包实际上是一个i2c命令的shell脚本,在i2c_cmd目录下。 | ||
+ | |||
+ | 我们提供了一个脚本camera_i2c_config进行总线的管脚复用配置。 | ||
+ | |||
+ | 具体使用说明请见:[[VEYE-MIPI-290/327/zh/i2c|I2C脚本使用说明]] | ||
+ | ===关于树莓派Computer Module 和树莓派Zero使用的补充说明=== | ||
====概述==== | ====概述==== | ||
− | 树莓派Computer Module | + | 树莓派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底板。 | |
====硬件连接==== | ====硬件连接==== | ||
− | ===== | + | =====CM3连接===== |
− | |||
− | |||
− | |||
树莓派官方CMIO板接线方法请参见[https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md 链接]。 | 树莓派官方CMIO板接线方法请参见[https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md 链接]。 | ||
Line 120: | Line 343: | ||
如图所示 | 如图所示 | ||
− | [[File:Veye-computer module.jpg|center|thumb| | + | [[File:Adpter with VEYE-MIPI-290-327 front.jpg|center|thumb|树莓派增强款正面图|alt=|600x600px]] |
− | [[File:Veye computermodule Wiring scheme00.jpg|center|thumb| | + | [[File:Adpter with VEYE-MIPI-290-327 back.jpg|center|thumb|树莓派增强款背面图|alt=|600x600px]] |
− | [[File:Veye computer moduleWiring scheme01.jpg|center|thumb| | + | <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接口提供电源。 | <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系统安装==== | ||
+ | 树莓派官方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 用户手册]第七页。 | 我们所用的深圳市微雪电子有限公司生产的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 144: | Line 374: | ||
利用CAM1所连接的摄像头实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。 | 利用CAM1所连接的摄像头实现录像5s,录像文件保存到~/test.h264。可以自行调节t的大小来选择录制时间的长短。 | ||
− | ==== | + | ====视频控制软件包使用==== |
− | 点击[https://www.raspberrypi.org/documentation/hardware/computemodule/dt-blob-dualcam.bin 链接]下载dt-blob.bin文件,将文件放在/ | + | 点击[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
如何在树莓派平台使用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 Board与Adapter 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 软件包介绍
- 软件包包括视频流软件包和视频控制软件包。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 .
如图所示
利用USB网线转换器帮助Computer Module 连接网络,HDMI接口接入显示器,电源线连接power接口提供电源。
8.2.2 CM4接口连接
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同面线,如右图所示