当前位置: 首页 > news >正文

jetson上使用opencv的gstreamer进行MIPI和USB摄像头的连接以及udp推流

文章目录

  • 1. 连接MIPI相机(IMX219-A(接到CSI0) )
    • 1.1 使用nvgstcapture-1.0
    • 1.2 gst命令行连接
    • 1.3 在opencv中使用VideoCapture连接
    • 1.4 直接udp推流
  • 2. 连接USB相机
    • 2.1 gst命令行连接
    • 2.2 在opencv中使用VideoCapture连接
    • 2.3 直接udp推流
  • 3. 使用opencv对处理完成的图像使用VideoWriter进行UDP推流
  • 4. 推流结果查看
    • 4.1 gst命令行连接
      • 4.1.1 jetson设备
      • 4.1.2 非jetson设备:
    • 4.2 在opencv中使用VideoCapture获取推流结果
      • 4.2.1 jetson设备
      • 4.2.2 非 jetson设备
  • 5. 所有源码

1. 连接MIPI相机(IMX219-A(接到CSI0) )

1.1 使用nvgstcapture-1.0

使用nvgstcapture-1.0可以直接打开相机。

1.2 gst命令行连接

用于复制:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1'! nvvidconv ! autovideosink sync=false

用于查看:

gst-launch-1.0 \
nvarguscamerasrc sensor-id=0 ! \
'video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1'! \
nvvidconv ! \
autovideosink sync=false

1.3 在opencv中使用VideoCapture连接

opencv需要带gstreamer编译。

std::string pipeline = "nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1 ! nvvidconv ! video/x-raw,format=BGRx ! appsink drop=true";
cv::VideoCapture cap(pipeline, cv::CAP_GSTREAMER);

这个获取到的是4通道图像,如果要进一步转为3通道,使用如下:

std::string pipeline = "nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1 ! nvvidconv ! video/x-raw,format=BGRx ! videoconvert ! video/x-raw,format=BGR ! appsink drop=true";

1.4 直接udp推流

用于复制:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1' ! nvvidconv ! video/x-raw,format=I420 ! x264enc tune=zerolatency bitrate=5000 speed-preset=superfast ! rtph264pay config-interval=1 pt=96 ! udpsink host=192.168.1.135 port=5000 sync=false

用于查看:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! \
'video/x-raw(memory:NVMM),format=NV12,width=1280,height=720,framerate=30/1' ! \
http://www.xdnf.cn/news/1256113.html

相关文章:

  • 网站IP被劫持?三步自建防护盾
  • 【基础知识】springboot+vue 基础框架搭建(更新中)
  • 数据库入门:从零开始构建你的第一个数据库
  • [Oracle] DECODE()函数
  • oracle 11G安装大概率遇到问题
  • Java面试宝典:JVM的垃圾收集算法
  • c++之 栈浅析
  • 如何提高云手机中数据信息的安全性?
  • 数字取证:可以恢复手机上被覆盖的数据吗?
  • PostgreSQL 数据库 设置90天密码过期时间的完整方案
  • 数据结构(五):顺序循环队列与哈希表
  • 僵尸进程问题排查
  • 安卓10.0系统修改定制化____修改系统固件 实现刷写完成 开机默认关闭桌面搜索框
  • 【网络编程】IO多路转接——select
  • 2025年我国半导体材料产业链全景分析
  • MySQL聚簇索引与非聚簇索引详解
  • uni-app X能成为下一个Flutter吗?
  • Linux基础测试
  • .NET 10 新增功能系列文章5——C# 14 中的新增功能
  • 人工智能的20大应用
  • 基于django的非物质文化遗产可视化网站设计与实现
  • [LVGL] 布局系统 lv_flex, lv_grid | 输入设备 lv_indev | union
  • 云原生安全挑战与治理策略:从架构思维到落地实践
  • 从密钥生成到功能限制:Electron 中 secure-electron-license-keys 的完整集成方案
  • Python生产环境部署指南:专业级应用启动方案
  • 2025最新国内服务器可用docker源仓库地址大全(2025年8月更新) · DockerHub镜像加速全面指南
  • 音视频时间戳获取与同步原理详解
  • 容器之王--部署Docker私有仓库harbor母盘步骤演练
  • 合约收款方式,转账与问题安全
  • ansible-playbook之获取服务器IP存储到本地文件