最近发现不少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(一)相关推荐

  1. 树莓派摄像头csi接口定义

    15pin,适用于除zero和 Compute Module IO Board以外的树莓派 Raspberry Pi Camera Pinout (15-Pin) Pin # Name Descrip ...

  2. 【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)

    1 YoLoV4环境搭建 直接下载,然后解压,最后移动到Jetson TX2 NX,如图所示,darknet下载链接: https://github.com/AlexeyAB/darknet 将解压的 ...

  3. 树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  4. 树莓派(5):CSI摄像头 vs USB摄像头

    CSI摄像头 vs USB摄像头 0. 前言 1. 准备工作 2. CSI摄像头 2.1 安装摄像头 2.2 安装驱动 2.3 测试 3. USB摄像头 4. 二者对比 4.1 型号说明 4.2 成像 ...

  5. 树莓派android摄像头驱动开发,树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)...

    前话 前面开发完GPIO口的功能,还剩下2个接口,一个是摄像头,一个是显示屏.本篇我们开发一个基于CSI接口的摄像头拍照程序. Demo:摄像头CSI的拍照程序 树莓派摄像头 笔者买的不是USB网络摄 ...

  6. jetson nano 用opencv使用摄像头(CSI和USB)

    目录 1.测试摄像头是否可用 查看是否连接到摄像头 CSI摄像头测试 USB摄像头测试 2.若以上步骤正常,进行oepncv读取摄像头数据 (1)CSI摄像头 1.安装v4l2-utils协助工具 2 ...

  7. Jetson Nano | darknet (yolov3.4-tiny)摄像头实时检测

    因为用的是opencv4所以使用yolo3编译可能回出错,可以换成yolov4或yolov4-tiny,同时YOLO V4无论在精度和速度上都较YOLO V3有了很大的提升,为在性能受限的嵌入式设备上 ...

  8. cmos sensor (图像传感器) CSI接口

    Chapter 39(Page 1429) CMOS Sensor Interface(CSI) 本章介绍了CMOS图像传感器接口(CSI)的架构,操作守则以及编程原型.该CSI接口能够使得MX27直 ...

  9. Jetson nano 摄像头二维码识别 Opencv zbar QT

    环境以及前言 环境 jetson nano Linux ubuntu 18.4 QT版本 QT5.98 摄像头 Csi摄像头 Opencv Jetson nano 自带的-.- 应该是4.1?不太清楚 ...

  10. CMOS Sensor Interface(CSI)

    CMOS图像传感器分为两类,非智能和智能.非智能的这类图像传感器只是支持传统的摄像头时序(场同步和行同步),然后输出一个Bayer(拜耳)以及 统计的数据,而智能传感器支持CCIR656视频解码格式, ...

最新文章

  1. 用c语言编写心里测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...
  2. python生成时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例
  3. 单目3D人脸重建DECA
  4. 文献学习(part80-A)--Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
  5. es6 --- 使用yield*命令遍历完全二叉树
  6. 兼容门:先卸载腾讯QQ,再卸载360软件!
  7. FM,FFM及其实现
  8. 3.5W 字详解 Java 集合
  9. config userc.php,框架内置Config.php配置
  10. r语言dataellipse_R语言绘图:28个实用程序包
  11. scala中命名参数函数_Scala中的命名参数和默认参数值
  12. 产品经理必读书单(2019史上最全)
  13. C#: 数字经纬度和度分秒经纬度间的转换
  14. linux 删除回收站文件,浅析linux下的回收站以及U盘中的.Trash文件夹
  15. 什么是 IoT App SDK?
  16. Ubuntu18.04设置截屏快捷方式
  17. 专家修炼-学习的方法
  18. C#精挑整理知识要点11 委托和事件(建议收藏)
  19. Beyond compare 全红问题解决
  20. html调用优酷视频播放,优酷网视频播放器站外调用详解

热门文章

  1. 【空间分析】4 探索性分析
  2. ENVI的seamless mosaic工具详解
  3. C语言字符串函数(strcpy,strlen,strcat,stsstr,strchr,strcmp,memcpy,memmove)
  4. Java中的双冒号::是什么玩意?有这个语法?
  5. 分享一波大厂面试题,助力大家拿个好Offer
  6. java web实训项目_通知 | Java、web大前端将在南京开课啦!
  7. pb 如何导出csv_《通讯录管理系统》之 5——数据导出
  8. 前牙正常覆盖是多少_深覆合千万不要矫正?用图示告诉你深覆合深覆盖的区别是什么,有什么危害...
  9. c语言小游戏_打字游戏超细讲解(C语言基础小游戏)
  10. python中常用的函数有哪些_python里常用的函数类型