VEYE MIPI 290/327 for Raspberry Pi/zh

From wiki_veye
Jump to navigation Jump to search

English

如何在树莓派平台使用VEYE-MIPI-290/327摄像头模组

概述

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

硬件准备及安装

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

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


树莓派与摄像头模组连接示意图
树莓派插接示意图
摄像头模组插接示意图

树莓派系统安装及配置

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

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

sudo raspi-config

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

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

软件包下载与介绍

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

  • 执行命令行

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

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

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

软件包介绍

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

这两部分都是开源的。

视频流软件包使用

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 网络传输(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

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

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

电脑一侧使用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。

D-SDK软件包

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

安装底层支持库

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

sudo apt-get install python-opencv

sudo apt-get install  libzbar-dev

SDK
  • 接口:

开放源码,详见D_mipicam.h

  • 编译:

./buildme

  • 安装:

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

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格式,显示,并进行二维码检测。

Python sample
  • preview.py

实现实时视频预览

  • capture.py

抓拍一张jpeg图片

  • capture_yuv.py

抓拍一张yuv图片

  • video.py

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

  • capture2opencv.py

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

视频控制软件包使用

我们使用I2C-0作为控制总线。我们提供了一个脚本camera_i2c_config进行总线的管脚复用配置。

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

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

概述

树莓派Computer Module 和树莓派Zero与树莓派经典版型MIPI CSI-2 接口有所不同,故需要使用增强版转接板来连接摄像头主板。下面以树莓派Computer Module与VEYE-MIPI-290/327 摄像头模组的连接使用来进行说明。硬件连接方法与树莓派经典版本不同,软件使用方法与上类似。

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

硬件连接

视频接口连接

摄像头主板加增强版转接板构成摄像头模组,摄像头模组通过FFC同面线及杜邦黑红线连接到Computer Module(黑线连接GND接口,红线连接5V接口),Computer Module可同时连接两个摄像头模组,CAM1和CAM0分别连接一个摄像头模组。

I2C接口连接

树莓派官方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接口提供电源。

树莓派Computer Module系统安装

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

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

视频流软件包使用

选项 -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的大小来选择录制时间的长短。

视频控制软件包使用

点击链接下载dt-blob.bin文件,将文件放在/root下,然后执行命令

CM3模块采用分时复用I2C1的方式来进行I2C通信

./camera_i2c_config [cameranum]

cameranum description
0 CAM0
1 CAM1

./veye_mipi_i2c.sh -b 1

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

FFC线备注

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

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


FFC异面线
FFC同面线