当前位置: 首页 > 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.dtcms.com/a/319098.html

相关文章:

  • JAVA,Maven分模块设计
  • 语言模型(LM):n-gram模型原理与困惑度(Perplexity)计算详解
  • B-树与B+树
  • AI大模型专题:LLM大模型(初识)
  • dubbo的metadata-report是做啥的
  • 17.11 单卡24G显存微调GLM-4实战:QLoRA到全参数调优,准确率狂飙42.7%
  • Qt: WA_DontCreateNativeAncestors
  • 【缩点 拓扑序】P3119 [USACO15JAN] Grass Cownoisseur G|省选-
  • 【关于Java中==和equals( )和hashCode( )三者异同】
  • 写Rust GPU内核驱动:GPU驱动工作原理简述
  • 【性能测试】---测试工具篇
  • 医疗人效管理新标杆:盖雅工场如何赋能健康服务企业提质增效
  • 「iOS」————自动释放池底层原理
  • CSS包含块与百分比取值机制完全指南
  • 数据分析——Pandas库
  • 添加内容溢出时显示完整内容提示的功能
  • QT5.15 mingw
  • c++之 栈浅析
  • Python 数据类型及数据类型转换
  • platform总线简介和使用场景说明
  • 基于Ruby的IP池系统构建分布式爬虫架构
  • 《算法导论》第 9 章 - 中位数和顺序统计量
  • 网页图片视频一键下载+视频去重修改 ,覆盖B站等多个平台
  • 【基础知识】springboot+vue 基础框架搭建(更新中)
  • 中国MCP市场:腾讯、阿里、百度的本土化实践
  • AI绘画:生成唐初李世民全身像提示词
  • 前后端加密传数据实现方案
  • 强反光干扰下读数误差↓79%!陌讯多模态算法在仪表盘识别场景的落地优化​
  • LINUX-文件查看技巧,重定向以及内容追加,man及echo的使用
  • 迅为RK3588开发板Android proc文件系统查询-内核版本查询