欢迎关注公众号【自动驾驶事务所】,分享更多以C/C++为计算机语言,以自动驾驶为方向的文章
TX2上的CSI摄像头(简易方式)
我喜欢Nvidia的新嵌入式计算机。在Nvidia的杰特森嵌入式计算产品线,包括TK1,TX1,TX2和,是一系列小型电脑制造流畅运行计算机视觉,神经网络和人工智能软件,而无需使用吨的能量。更好的是,他们的开发人员套件可以用作优秀的单板计算机,所以如果你曾经希望加强Raspberry Pi,这就是你想要的。我个人使用Jetson TX2,这是目前功能最强大的模块,并且被广泛使用。
使用Jetson设备的一个重大缺点是文档没有(也不能)涵盖所有用例。社区尚未成熟到可以随时找到随机博客的指南(例如Raspberry Pi和Arduino),所以你经常要为自己找出一些东西。
但是,我在这里至少消除了一件事 - 使用你的TX2上的CSI摄像头。这些方法也适用于其他Jetson设备!
我们将考虑利用Jetson的图像处理能力并从TX2自己的特殊CSI摄像头端口捕获视频。具体来说,我会告诉你:
为什么你甚至想要CSI相机。
哪里可以买到好的CSI相机。
如何 使用和Nvidia多媒体管道从CSI摄像机获得高分辨率,高帧率视频gstreamer。
如何在OpenCV和ROS中使用该视频。
目录
为何选择CSI摄像头(与USB相比)?
为什么CSI相机的性能优于USB?
哪里可以获得CSI摄像头(适用于Jetson设备)
从CSI相机中取出视频
选择正确的管道
命令行工具
OpenCV的
在Nvidia Jetson上使用GStreamer支持编译OpenCV 3
从OpenCV中的GStreamer管道捕获视频
机器人操作系统(ROS)
为何选择CSI摄像头(与USB相比)?
如果您希望获得最大性能(在FPS,分辨率和CPU使用方面)或者您需要对相机进行低级别控制 - 如果您愿意支付相机,CSI相机应该是您的主要相机选择这些功能的优质。
我个人使用CSI摄像头,因为我需要高分辨率视频,同时保持可接受的帧率。使用TX2和Leopard Imaging IMX377CS,我可以轻松地以~20 fps的速度拉动4k视频。真棒。我也喜欢在CSI摄像机上更换镜头的能力,这些摄像机通常使用小型C-Mount或M12镜头。由于GoPro的普及,有大量的C / CS-Mount镜头以及用于将DSLR相机镜头转换为C-Mount的镜头适配器。
另一方面,USB摄像头可以非常便宜,通常通过V4L2协议开箱即用,是您不需要高性能视频的应用的绝佳选择。您可以使用Logitech C270以20美元的价格购买720p视频,正如加利福尼亚理工州立大学所做的那样,他们的“Jet”机器人套件就足够了,这足以使他们的机器人玩具车识别和收集物品,找到面孔,找到线条等等。 。
用户Jazza 在Nvidia开发者论坛上发布的一篇精彩帖子指出了USB和CSI摄像机之间的进一步比较:
USB摄像头:
很容易整合。
可以做很多离线图像工作(曝光控制,帧速率等)。
许多提供输入/中断可以帮助您的应用程序计时(例如,在新帧上中断)。
由于USB总线使用CPU时间,如果它使用100