在Jetson TX2上捕获、显示摄像头视频
参考文章:How to Capture and Display Camera Video with Python on Jetson TX2
与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下面的描述
在Jetson TX2捕获和显示摄像头视频,包括IP CAM(网络摄像头)、USB webcam和板载摄像头。代码应该也适用于Jetson TX1
先决条件
带有GStreamer和python支持的OpenCV构建并安装在Jetson TX2,我使用的是OpenCV-3.4.0和python3。关于如何在Jetson TX2上安装OpenCV(3.4.0)参考下面文章:在Jetson TX2上安装OpenCV(3.4.0)
如果你想用IP CAM进行测试,需要设置它并知道它的RTSP URI。例如:RTSP://admin:XXXXX@192.168.1.64:554。
插入一个USB摄像头,通常是/dev/video1,板载摄像头使用的是/dev/video0
安装包含h264parse元素的gstreamer1.0-plugin -bad-xxx。这是解码来自IP CAM的H.264 RTSP流所必需的。
sudo apt-get install gstreamer1.-plugins-bad-faad \
gstreamer1.-plugins-bad-videoparsers
代码下载与使用
下载代码:tegra-cam.py 地址:https://gist.github.com/jkjung-avt/86b60a7723b97da19f7bfa3cb7d2690e
如果无法访问链接,是因为浏览器打不开gist库。参照下面
windows下 打开C:\Windows\System32\drivers\etc\hosts文件
编辑器打开,在最后行添加192.30.253.118 gist.github.com
保存。
使用USB摄像头,分辨率设为1280x720。'–vid 1' 意味着 /de/video1
python3 tegra-cam.py --usb --vid --width --height
我的环境下运行出错!
原因可能是我的GStreamer的v4l2src对USB摄像头不起作用,使用下面的代码去代替open_cam_usb()
def open_cam_usb(dev, width, height):
return cv2.VideoCapture(dev)
使用板载摄像头
python3 tegra-cam.py
使用IP CAM,同时替换成你自己的IP
python3 tegra-cam.py --rtsp --uri rtsp://admin:XXXXXX@192.168.1.64:554
这个tegra-cam.py脚本关键在于调用了 cv2.VideoCapture()的GStreamer管道。根据经验,使用 nvvidconv 进行图像缩放并将颜色格式转换为BGRx可以在帧率产生更好的效果
def open_cam_rtsp(uri, width, height, latency):
gst_str = ('rtspsrc location={} latency={} ! '
'rtph264depay ! h264parse ! omxh264dec ! '
'nvvidconv ! '
'video/x-raw, width=(int){}, height=(int){}, '
'format=(string)BGRx ! '
'videoconvert ! appsink').format(uri, latency, width, height)
return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER) #def open_cam_usb(dev, width, height):
# # We want to set width and height here, otherwise we could just do:
# # return cv2.VideoCapture(dev)
# gst_str = ('v4l2src device=/dev/video{} ! '
# 'video/x-raw, width=(int){}, height=(int){} ! '
# 'videoconvert ! appsink').format(dev, width, height)
# return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER) def open_cam_usb(dev, width, height):
return cv2.VideoCapture(dev) def open_cam_onboard(width, height):
# On versions of L4T prior to 28.1, add 'flip-method=2' into gst_str
gst_str = ('nvcamerasrc ! '
'video/x-raw(memory:NVMM), '
'width=(int)2592, height=(int)1458, '
'format=(string)I420, framerate=(fraction)30/1 ! '
'nvvidconv ! '
'video/x-raw, width=(int){}, height=(int){}, '
'format=(string)BGRx ! '
'videoconvert ! appsink').format(width, height)
return cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)
在Jetson TX2上捕获、显示摄像头视频的更多相关文章
- 在Jetson TX2上显示摄像头视频并使用python进行caffe推理
参考文章:How to Capture Camera Video and Do Caffe Inferencing with Python on Jetson TX2 与参考文章大部分都是相似的,如果 ...
- 在Jetson TX2上安装OpenCV(3.4.0)
参考文章:How to Install OpenCV (3.4.0) on Jetson TX2 与参考文章大部分都是相似的,如果不习惯看英文,可以看看我下面的描述 在我们使用python3进行编程时 ...
- Jetson TX2上的demo(原创)
Jetson TX2上的demo 一.快速傅里叶-海动图 sample The CUDA samples directory is copied to the home directory on th ...
- 在Jetson TX2上安装caffe和PyCaffe
caffe是Nvidia TensorRT最支持的深度学习框架,因此在Jetson TX2上安装caffe很有必要.顺便说一句,下面的安装是支持python3的. 先决条件 在Jetson TX2上完 ...
- 【译】如何使用Vue捕获网络摄像头视频
几个月前,我一直关注着比特币的爆发并且在GDAX网站上注册账号.在注册验证的过程中,网站提示要通过计算机的网络摄像头提交我自己的一张照片作为照片ID.这是一个很酷的做法,让我思考一个问题:在网络浏览器 ...
- qt上用opencv显示摄像头视频
参考:http://blog.csdn.net/augusdi/article/details/8865541 代码如下: 注意,要在ui界面上放置一个“Vertical Layout”控件,调整到合 ...
- 在TX2上多线程读取视频帧进行caffe推理
参考文章:Multi-threaded Camera Caffe Inferencing TX2之多线程读取视频及深度学习推理 背景 一般在TX2上部署深度学习模型时,都是读取摄像头视频或者传入视频文 ...
- 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...
- crtmpserver的安装,摄像头视频测试
下载 svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/branches/1. ...
随机推荐
- python 函数--闭包函数
一.闭包函数: 在一个外函数中定义一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用. 二.实例: def outer(a): #外函数 b = 10 #临时变量 def i ...
- python 删除三天前的日志.py
#获取所有文件def file(): for cur_dir, dirs, files in os.walk(r'/学习/接口自动化/BestTest/作业/logs'): # cur_dir(当前路 ...
- Netperf网络性能测试工具详解教程
本文下载链接: [学习笔记]Netperf网络性能测试工具.pdf 一.Netperf工具简介 1.什么是Netperf ? (1)Netperf是由惠普公司开发的一种网络性能测量工具,主要针对基于T ...
- 最长回文子窜O(N)
字符窜同构的性质:同构字符窜拥有最小和最大的表示方法: 最长回文子窜: 1.首先暴力法:(n三方) 枚举每个起点和终点,然后单向扫描判断是不是回文子窜: 2.中心扩散法,(N方) 枚举每个中点,向外扩 ...
- 新手必须知道的13个Xcode小技巧
当谈论到iOS开发工具时,有一个肯定是所有iOS开发者都熟悉的,那就是Xcode.Xcode是使所有令人赞叹的iOS app成为可能的驱动力. Xcode能帮助我们完成非常多的事情,但是这也有点让人头 ...
- 【翻译】创建String 使用“”还是构造函数(new String)
在java中创建String,通常有以下两种方法. String x = "abc"; String y = new String("abc"); 它们之间有什 ...
- sqlserver2008 服务器实例连接
一.sqlserver 配置管理器里面,看sqlserver服务那个,如果只有一个mssqlserver,那就用local或者.来访问,如果不是,可能有命名实例.
- [php] 简单的实现一个错误接管类
自己弄的一个错误接管类: <?php //---------------------------------- // Leephp 错误接管类 // 2017-07-06 // Pengchon ...
- 【考试总结】欢乐模拟赛_Day1
\(T1\) 题目描述 给出一个 \(n × n\) 的, 元素为自然数的矩阵. 这个矩阵有许许多多个子矩阵, 定义它的所有子矩阵形成的集合为 \(S\) . 对于一个矩阵 \(k\) , 定义 \( ...
- python-用户输入和while循环
函数input() 比较大小要同类型: age=iput() 21 age=int(age) age>=10 true prompt = "If you tell us who you ...