TX2 摄像头CSI(一)
最近发现不少Jetson TX2用户都在考虑如何选择相机,尤其是关于CSI相机。Lady我在网上找到一篇不错的文章,来自于一位软件工程师,分享给大家
https://cloud.tencent.com/developer/article/1151984
在本文里,他将重点告诉大家:
为什么用CSI相机
如果您希望获得最佳性能(根据FPS,分辨率和CPU使用情况),或者需要对摄像机进行底层控制,并且您愿意支付一台摄像机,CSI摄像机应该是您的摄像机的主要选择这些功能的优质。
我个人使用CSI相机,因为我需要高分辨率的视频,同时保持可接受的帧率。 在TX2搭配 Leopard Imaging IMX377CS 摄像头,我轻松以〜20 fps的速度拖动4k视频, 真棒。 我也喜欢CSI相机上具备更换镜头的能力,通常使用小型C-Mount或M12镜头。 由于GoPro的流行,有很多C/CS-Mount镜头以及用于将数码单反相机镜头转换为C-Mount的镜头转接器.
另一方面,USB摄像头的价格非常便宜,通常通过V4L2协议即可使用,对于不需要高性能视频的应用来说,它是一个很好的选择。 你可以用$20买到720p视频罗技C270,正如加州州立理工大学在他们有据可查的文件中所做的’Jet’机器人套件,这足以让他们的机器人玩具车识别并收集物体、找到人脸、定位线条等。
一个在Nvidia开发人员论坛上发布了非常棒的文章用户Jazza指出USB和CSI相机之间的进一步比较:
USB相机:
· 优:很容易整合。
· 优:可以做很多的离线的图像工作(曝光控制,帧率等)。
· 优:提供输入/中断功能,可为您节省计算应用程序时间(例如,在新帧上中断)。
· 缺:由于USB总线使用CPU时间,如果使用100%CPU,这会影响您的应用程序。
· 缺:对于使用硬件视觉管线(硬件编码器等)不是最佳的。
· 优:可以长距离工作(最高可达USB标准)。
· 优:可以支持更大的图像传感器(1英寸或更高,以获得更好的图像质量和更少的噪音)。
CSI汇流排相机:
· 优:根据CPU和内存使用情况进行优化,以便将图像处理并存入内存。
· 优:可以充分利用硬件的视觉管线。
· 缺:支持较短距离(通常不超过10cm)。除非您使用序列化系统(GMSL,FPD Link,COAXPress,Ambarella),但这些系统目前尚不成熟并且需要定制。
· 缺:通常与手机相机模块的小型传感器一样,要不就得多花点钱去定制。通过TX1/2中的硬件去噪降低小传感器的额外噪音。
· 优:可执行底层访问与控制传感器/摄像头。
为什么CSI相机比USB摄像头更好?
USB的最大问题是带宽和处理需求。USB 3.0可以推送5Gbps,技术上足以接受60 fps/1080p或20fps/4K(3840p)未压缩的视频流(你自己看)。但是,这仅仅基于带宽,并没有揭示处理视频时额外处理和内存管理瓶颈的真相。 例如,See3CAM_CU130 USB 3.0相机应该可以达到60fps 1080p,但在TK1上真测结果,只能支持18 fps/1080p压缩格式,而未压缩的格式只有1fps。虽然在计算性能更强的机器上性能会更好,但这是问题的证据。
相反,Jetson TX1和TX2支持6个专用的MIPI CSI-2摄像机端口,每通道(lans)带宽可达2.5 Gb/s,双图像服务处理器(ISP)提供1.4 Gigapix/s处理能力,换句话说,它具有三个4k摄像机(或者六个30fps/1080p相机)带宽。当然,带宽并非全部,因为这些图像需要移动和处理,但通过使用硬件视觉管道,图像可以跳过加载到DRAM中,并通过独立于主CPU处理视频来减少CPU负载。根据我自己的经验,通过利用TX2上的这些硬件功能,我能够以接近20 fps速度运行4k视频。这就是为什么视频可以通过CSI摄像头如此高效地工作 - 专用于视频的独立硬件,就像GPU专门用于3D图形一样。
有哪些支持Jetson的CSI相机
在我的研究中,发现在关于CSI相机的资源很少。Jetson Wiki有一个全面的调查不同相机选项的页面,也许能让Jetson开发人员找到一些提示:
至于实际产品供应方面,有:
e-con Syetems,他们为Jetson设备提供CSI摄像头和USB摄像头。
Leopard Imaging,为Jetson提供订制的CSI相机。
这两家公司都是Nvidia的官方影像合作伙伴,并提供从相机提取数据所需的驱动程序和说明。
我个人使用Leopard Imaging的IMX377CS并发现它很给力,也提供不错的安装驱动程序说明。
可选择的摄像头
https://elinux.org/Jetson/Cameras
CSI 摄像头操作
底层控制需要用GStreamer框架访问,所以如果习惯用Opencv开启摄像头的话,需要自己编译Opencv的时候enable gstreamer模块。实际应用发现,opencv调用摄像头,各种设置(白平衡,曝光…)非常不好搞。
设置相关参数,最简单的办法,自己C语言调用GStreamer写吧。
具体怎么搞,英伟达提供了工具NVGSTCapture,官方的回答是,自己看代码吧。developer.nvidia.com/embedded/dlc/l4t-sources-24-2-1
还有两个命令行工具:gst-launch, gst-inspect,调试摄像头可用。
摄像头参数
https://developer.download.nvidia.com/embedded/L4T/r24_Release_v2.1/Docs/Accelerated_GStreamer_User_Guide_Release_24.2.1.pdf
TX2 摄像头CSI(一)相关推荐
- 树莓派摄像头csi接口定义
15pin,适用于除zero和 Compute Module IO Board以外的树莓派 Raspberry Pi Camera Pinout (15-Pin) Pin # Name Descrip ...
- 【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)
1 YoLoV4环境搭建 直接下载,然后解压,最后移动到Jetson TX2 NX,如图所示,darknet下载链接: https://github.com/AlexeyAB/darknet 将解压的 ...
- 树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- 树莓派(5):CSI摄像头 vs USB摄像头
CSI摄像头 vs USB摄像头 0. 前言 1. 准备工作 2. CSI摄像头 2.1 安装摄像头 2.2 安装驱动 2.3 测试 3. USB摄像头 4. 二者对比 4.1 型号说明 4.2 成像 ...
- 树莓派android摄像头驱动开发,树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)...
前话 前面开发完GPIO口的功能,还剩下2个接口,一个是摄像头,一个是显示屏.本篇我们开发一个基于CSI接口的摄像头拍照程序. Demo:摄像头CSI的拍照程序 树莓派摄像头 笔者买的不是USB网络摄 ...
- jetson nano 用opencv使用摄像头(CSI和USB)
目录 1.测试摄像头是否可用 查看是否连接到摄像头 CSI摄像头测试 USB摄像头测试 2.若以上步骤正常,进行oepncv读取摄像头数据 (1)CSI摄像头 1.安装v4l2-utils协助工具 2 ...
- Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测
因为用的是opencv4所以使用yolo3编译可能回出错,可以换成yolov4或yolov4-tiny,同时YOLO V4无论在精度和速度上都较YOLO V3有了很大的提升,为在性能受限的嵌入式设备上 ...
- cmos sensor (图像传感器) CSI接口
Chapter 39(Page 1429) CMOS Sensor Interface(CSI) 本章介绍了CMOS图像传感器接口(CSI)的架构,操作守则以及编程原型.该CSI接口能够使得MX27直 ...
- Jetson nano 摄像头二维码识别 Opencv zbar QT
环境以及前言 环境 jetson nano Linux ubuntu 18.4 QT版本 QT5.98 摄像头 Csi摄像头 Opencv Jetson nano 自带的-.- 应该是4.1?不太清楚 ...
- CMOS Sensor Interface(CSI)
CMOS图像传感器分为两类,非智能和智能.非智能的这类图像传感器只是支持传统的摄像头时序(场同步和行同步),然后输出一个Bayer(拜耳)以及 统计的数据,而智能传感器支持CCIR656视频解码格式, ...
最新文章
- 用c语言编写心里测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...
- python生成时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例
- 单目3D人脸重建DECA
- 文献学习(part80-A)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
- es6 --- 使用yield*命令遍历完全二叉树
- 兼容门:先卸载腾讯QQ,再卸载360软件!
- FM,FFM及其实现
- 3.5W 字详解 Java 集合
- config userc.php,框架内置Config.php配置
- r语言dataellipse_R语言绘图:28个实用程序包
- scala中命名参数函数_Scala中的命名参数和默认参数值
- 产品经理必读书单(2019史上最全)
- C#: 数字经纬度和度分秒经纬度间的转换
- linux 删除回收站文件,浅析linux下的回收站以及U盘中的.Trash文件夹
- 什么是 IoT App SDK?
- Ubuntu18.04设置截屏快捷方式
- 专家修炼-学习的方法
- C#精挑整理知识要点11 委托和事件(建议收藏)
- Beyond compare 全红问题解决
- html调用优酷视频播放,优酷网视频播放器站外调用详解
热门文章
- 【空间分析】4 探索性分析
- ENVI的seamless mosaic工具详解
- C语言字符串函数(strcpy,strlen,strcat,stsstr,strchr,strcmp,memcpy,memmove)
- Java中的双冒号::是什么玩意?有这个语法?
- 分享一波大厂面试题,助力大家拿个好Offer
- java web实训项目_通知 | Java、web大前端将在南京开课啦!
- pb 如何导出csv_《通讯录管理系统》之 5——数据导出
- 前牙正常覆盖是多少_深覆合千万不要矫正?用图示告诉你深覆合深覆盖的区别是什么,有什么危害...
- c语言小游戏_打字游戏超细讲解(C语言基础小游戏)
- python中常用的函数有哪些_python里常用的函数类型