首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Deepstream SDK拍摄视频并提取jpg格式的帧

Deepstream SDK 是 NVIDIA 提供的一个用于视频处理的开源平台,它支持多种视频流处理任务,包括视频捕获、图像处理、对象检测等。以下是如何使用 Deepstream SDK 拍摄视频并提取 JPG 格式帧的基本步骤:

基础概念

Deepstream SDK 提供了一个灵活的框架,用于构建高性能的视频分析应用。它支持多种硬件加速,包括 GPU 加速的视频编解码和处理。

相关优势

  • 高性能:利用 GPU 加速,能够处理高分辨率和高帧率的视频流。
  • 灵活性:支持多种视频源和输出格式,易于集成第三方插件。
  • 可扩展性:可以轻松添加自定义的图像处理和分析模块。

类型

Deepstream SDK 支持多种类型的视频处理任务,包括但不限于:

  • 视频捕获
  • 图像处理
  • 对象检测
  • 视频编码

应用场景

  • 智能监控系统
  • 自动驾驶车辆
  • 工业自动化
  • 医疗影像分析

如何使用 Deepstream SDK 拍摄视频并提取 JPG 格式的帧

安装 Deepstream SDK

首先,你需要安装 Deepstream SDK。你可以从 NVIDIA 的官方网站下载并按照官方文档进行安装。

配置视频捕获

使用 Deepstream SDK 配置视频捕获通常涉及以下步骤:

代码语言:txt
复制
gst-launch-1.0 v4l2src ! video/x-raw,width=1920,height=1080,framerate=30/1 ! nvvidconv ! video/x-raw(memory:NVMM),width=1920,height=1080,format=I420 ! nvjpegenc ! filesink location=output.jpg

这个命令行示例使用 v4l2src 从摄像头捕获视频流,然后通过 nvvidconv 将视频流转换为 GPU 可以处理的格式,接着使用 nvjpegenc 将视频帧编码为 JPG 格式,并最终保存到文件。

提取帧

如果你想要在视频流中定时提取帧,可以使用 GstQueueGstCapsFilter 来实现。以下是一个简单的示例代码片段:

代码语言:txt
复制
#include <gst/gst.h>

static GstElement *pipeline, *source, *capsfilter, *converter, *encoder, *sink;

static void pad_added_handler(GstElement *src, GstPad *new_pad, gpointer user_data) {
    GstPad *sink_pad = gst_element_get_static_pad(GST_ELEMENT(user_data), "sink");
    GstPadLinkReturn ret;
    GstCaps *new_pad_type = NULL;

    new_pad_type = gst_pad_get_current_caps(new_pad);
    GstStructure *new_pad_struct = gst_caps_get_structure(new_pad_type, 0);
    const gchar *new_pad_type_name = gst_structure_get_name(new_pad_struct);

    g_print("Received new pad '%s' from '%s':\n", GST_OBJECT_NAME(new_pad), GST_ELEMENT_NAME(src));

    if (g_str_has_prefix(new_pad_type_name, "video/x-raw")) {
        ret = gst_pad_link(new_pad, sink_pad);
        if (GST_PAD_LINK_FAILED(ret)) {
            g_print("Type is '%s' but link failed.\n", new_pad_type_name);
        } else {
            g_print("Link succeeded (type '%s').\n", new_pad_type_name);
        }
    } else {
        g_print("It has type '%s' which is not raw video. Ignoring.\n", new_pad_type_name);
    }

    if (new_pad_type != NULL)
        gst_caps_unref(new_pad_type);
    gst_object_unref(sink_pad);
}

int main(int argc, char *argv[]) {
    gst_init(&argc, &argv);

    pipeline = gst_pipeline_new("video-pipeline");
    source = gst_element_factory_make("v4l2src", "video-source");
    capsfilter = gst_element_factory_make("capsfilter", "caps-filter");
    converter = gst_element_factory_make("videoconvert", "converter");
    encoder = gst_element_factory_make("nvjpegenc", "encoder");
    sink = gst_element_factory_make("filesink", "sink");

    g_object_set(G_OBJECT(capsfilter), "caps", gst_caps_from_string("video/x-raw, format=(string)I420"));

    gst_bin_add_many(GST_BIN(pipeline), source, capsfilter, converter, encoder, sink, NULL);
    gst_element_link_many(capsfilter, converter, encoder, sink, NULL);

    g_signal_connect(source, "pad-added", G_CALLBACK(pad_added_handler), converter);

    gst_element_set_state(pipeline, GST_STATE_PLAYING);

    GstBus *bus = gst_element_get_bus(pipeline);
    GstMessage *msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE,
        static_cast<GstMessageType>(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));

    if (msg != NULL)
        gst_message_unref(msg);

    gst_object_unref(bus);
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);
    return 0;
}

这个示例代码创建了一个视频处理管道,从摄像头捕获视频流,转换视频格式,并将视频帧编码为 JPG 格式保存到文件。

参考链接

请注意,上述代码和命令行示例仅供参考,实际使用时需要根据你的具体环境和需求进行调整。如果你在使用 Deepstream SDK 过程中遇到问题,可以参考官方文档或者在 NVIDIA 的开发者社区寻求帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何用Python提取视频某些保存为图片

以前文章分享过,视频是连续图像集合。那么我们是否可以提取一段视频中,某些我们想要部分图像,保存下来呢?答案是可以。我们甚至可以通过视频时间来提取视频某些图像。...val,frame = vc.read() if c % interval == 0: cv2.imwrite(dst + str(c) + '.jpg...',frame) c = c + 1 cv2.waitKey(1) vc.release() 程序主要功能是将根据时间提取视频图像保存。...它需要两个参数,一个为视频名字,另一个为提取图片保存路径。每隔1000保存一张图像到本地。也可以指定一个范围,比如提取100到500图像。...程序是非常灵活,想要做成什么,完全取决于你想法和创意。 比如你可以通过修复视频中每一图像,实现视频修复。

1.1K30

NVIDIA Deesptream笔记(三):Deesptream里那些超实用插件

对于视频分析从业人员来说,是很有必要了解一下NVIDIA Deepstream开发工具。...我们将通过一个例子来讨论你如何deepstream构建一些东西,但在我们这样做之前,先阅读一些我们已经构建示例应用程序,以帮助我们快速了解几个插件,让你了解发生了什么。...所以解码器插件是我要讨论第一个,IP摄像机是许多用例中比较常用摄像机之一,为了处理来自这些摄像机这些压缩视频拍摄,我们建立了一个 解码器插件,利用NVDECODE Low level API和硬件加速...它是两个Plugins集合。 这对Plugin首先允许用户完成应用程序图像数据感知阶段--也就是你程序理解,和从视频图像和像素中,创建和提取元数据阶段。...这两个插件,也叫nvmsgtransform和nvmsgbroker, 允许你DeepStream应用程序,直接(支持将你基本信息格式,根据某种常用消息框架格式,和用户自定义模式和规范进行转换,

1.9K60
  • NVIDIA DeepStream笔记(一):Deepstream SDK到底解决了什么问题?

    我们讨论如何使用deep stream SDK和transfer learning toolkit来做大规模部署视频流分析。...接着我们会介绍Deepstream ,特别是Deepstream 3.0里发布了什么新功能。 我们会演示一些示例应用, 展示用Deepstream SDK如何轻松构建可能应用。...在其核心,Deepstream sdk允许开发人员挑选插件,在他们代码中利用这些插件构建一个单独应用程序类型。...在这种情况下来自不同摄像机多个画面必须一起批量处理,因此此参考应用程序中还显示了如何从30个摄像机拍摄30个主题流管理,一次性分析它们,以有效使用GPU。...我们还提供新插件允许您将边缘设备连接到云,这些插件显示在示例应用程序中。Deepstream 3.0版本向您展示如何从像素到对您提取元数据进行流传输和批量分析,可以在云服务器上进行分析。

    16.6K3429

    关于NVIDIA Deepstream SDK压箱底资料都在这里了

    DeepStream SDK是一个通用流分析SDK,它使系统软件工程师和开发人员能够使用NVIDIA Jetson或NVIDIA Tesla平台构建高性能智能视频分析应用程序。...什么是GStreamer,我如何开始使用它? DeepStream SDK使用开源GStreamer框架来提供低延迟高吞吐量。GStreamer是一个用于构造媒体处理组件图库。...gi-language=c 使用DeepStream SDK可以部署哪些应用程序? DeepStream SDK可用于构建端到端ai应用程序来分析视频和传感器数据。...API 从多源到一个二维网格阵列渲染 加速X11或者EGL绘制 缩放、格式转换和旋转 为360度摄像机输入进行图像修正 元数据生成和编码 消息传递到云 更多关于Deepstream 插件介绍:...重点展示如何DeepStream里,对一个视频流,同时对人脸区域和车牌区域进行模糊, 也展示了当该DeepStream流水线风格应用程序在运行时候,动态添加删除视频流通道。

    6.4K42

    英伟达公开课|详解迁移式学习下实时目标检测模型训练与部署

    主讲人 | 何琨 英伟达 量子位编辑 | 公众号 QbitAI 2月27日,英伟达图像处理系列公开课第一期线上开播,跟数百位开发者同学共同探讨了如何利用 NVIDIA 迁移式学习工具包和Deepstream...DeepStream SDK ? DeepStream SDK是为大规模创建和部署基于AI视频分析应用程序解决方案而设计,涵盖了视频处理部署阶段所有模块,它提供了完整框架和所有基本构建模块。...上图是未优化,结果是大概1每秒推理速度,而下图是仅用DeepStream优化过,已经达到了4.5每秒,也就是说达到了4倍优化效果。 ?...其中,Ubuntu使用16.04LTS以上即可,GPU driver需要v410及以上版本,DeepStream推荐使用4.0以上版本。 ?...提取码:nveu 接下来课程,我们也将分享更多能实际运行代码。

    1.1K30

    利用NVIDIA TRT和Deepstream创建一个实时车牌检测和识别应用程序

    使用DeepStream SDK可以轻松部署生成TLT优化模型。...训练LPR模型 -准备数据 -实验配置 -训练 -导出模型 -LPR训练模型精确性 使用DeepStream SDK部署LPD和LPR 在本节中,我们将引导您完成在DeepStream中部署LPD和LPR...我们提供了一个示例DeepStream应用程序。LPD / LPR样本应用程序为多个视频流输入构建了管道,使用级联模型推理批处理视频,以检测汽车及其车牌识别字符。...以下测试是使用示例LPR应用程序对1080p(1920×1080)分辨率视频进行。下表显示了使用三种DNN模型处理整个视频分析管道端到端性能,从摄取视频数据到在上呈现元数据开始。...该解决方案涵盖了开发智能视频分析管道所有方面-使用Transfer Learning Toolkit训练深度神经网络模型,以在DeepStream SDK中部署训练后模型。

    3.3K31

    NVIDIA Deepstream 4.0笔记(完结篇):如何开始使用Deepstream​以及容器

    这些是作为SDK一部分打包一些参考应用程序。 如果你刚刚开始使用Deepstream,这是你出发点。所有源代码都包含在包中。...Deepstream Test 1是一个基本Hello World,这将引导您完成单个视频源从文件到解码批处理推断基本构建块,然后在结果中输出屏幕上边界框。...最后输出可用于在屏幕上查看带有元数据流或存储在文件中选项。这是一个应用程序,可以快速原型化或演示您pipline,了解它在Deepstream工作原理。源目录中提供了所有源代码。 ?...NVIDIA容器运行时为在Docker容器中运行应用程序启用GPU加速。CUDA工具包,视频编解码器SDK,TensorRT等安装在容器内。...在此容器顶部运行Deepstream SDKDeepstream 应用程序。 容器具有所有更多级别依赖项,以在容器内构建应用程序。 ?

    5.2K30

    NVIDIA Deepstream笔记(四):一个停车场管理系统实例

    配置文件描述了你应用程序如何处理,和如何同周边环境进行交互。PPT上就是当你下载DeepStream SDK后,所能参考标准/参考配置文件。...然后分析到关于汽车这些信息,被提取出来,发送到屏幕上显示。...我们还能看到,大量这些组件都是现成可用:对于来自摄像头RTSP协议数据流时候,我们有通讯Pluging来处理它。对于鱼眼摄像头视频,我们有预处理插件来进行,带有鱼眼拉平矫正视频解码。...你可以看到,我们并没有运行基于DeepStream单体视频感知/采集服务器,而是有很多DeepStream应用在生成元数据,通过一个消息中间件/消息代理,在本例中是Apache Kafka,然后发送一个分析服务器...关于NVIDIA Deepstream用于停车场应用视频介绍(中文字幕) 视频内容

    3.9K70

    NVIDIA Deepstream 笔记(二):如何设计视频分析框架?

    这是第二部分 Deepstream是一个建立在GStreamer之上SDK,GStreamer是一个开源多媒体分析框架,由几个核心组件组成。...Deepstream提供了一个您不需要担心优化数据交流情况,它在这张幻灯片上展示了DeepStream如何。 处理流水线最开始,是NVDec解码组件。...NVDec硬件解码器,通过使用cudaMalloc()函数,在显存中分配了多个输出缓冲区,一旦我们在GPU显存中有了多个输出缓冲区后,NVDec硬件解码器就逐解码,解码一,就将一数据放入到一个输出缓冲区中...直接让DeepStream SDK为你做事即可,免除了大量复制,使得你能在你智能视频分析应用中,得到实时处理性能。...DeepStream元数据结构,包括了每图像信息,还包括了部分和本相关检测到对象信息。

    6.5K61

    NVIDIA Jetson NANO 2GB: DeepStream 简介与启用

    DeepStream在很多城市管理项目中,扮演最核心视频分析角色。...DECODE:进行解码,这个过程传统上非常消耗CPU资源,但目前NVIDIA很多设备上都提供硬件解码器(DECODER)与算法,能针对不同输入源/视频格式进行快速解码动作,不仅兼容性高,并且能大幅度减轻...对于实际IVA应用程序/服务部署,应用程序远程管理和控制至关重要,DeepStream SDK可以在任何云和边缘运行,这使得它成为处理物联网需求强大SDK,如边缘和云之间有效双向消息传递、安全、...(3) 通过使用DeepStream,可以大规模部署使用Kubernetes和Helm Charts管理容器化应用程序 (4) DeepStream应用程序中智能记录功能允许通过选择性记录在边缘上节省宝贵磁盘空间...对于初学者最大好消息是,即便不懂Python或C/C++开发语言,也能很轻松地使用这套视频分析工具。

    1.3K42

    NVIDIA Deepstream 4.0笔记(一):加速基于实时AI视频和图像分析

    您可以从NGC中取出所有内容,使用TLT重新训练并在deepStream上部署。 ? 这是应用级别的整个deepsteam软件堆栈。顶部是应用程序。在应用程序层下面是SDK。...这个用于处理和理解视频或图像pipline是工业,不同行业之间可能存在一些细微差别。但总的来说,工作流程仍然非常相似。 ? DeepStream SDK是一个流分析工具包。...解码器插件使用NVIDIA硬件加速解码引擎。与GPU上CUDA内核不同。解码之后,可能需要进行一些预处理。这可以是图像转换、图像缩放、裁剪或如果流是来自一个360度摄像头,然后你需要转移图像。...在进行推理之后,您可能需要跟踪对象以获得深入了解,最后一步是使用附加元数据在屏幕上查看视频,或者仅将元数据发送到云中进行分析。 ? 这是deepstream SDK中包含插件列表。...有关如何使用此插件更多信息,请参考文档中Plugins菜单。 ? 这是在不同NVIDIA平台上利用Deepstream达到实时性能。

    4.1K51

    增强视觉AI可能性:DeepStream 6.3推出GXF和多架构容器支持

    DeepStream是领先基于GStreamer软件开发工具包(SDK),使开发人员能够创建尖端视觉AI应用。...(初学者可以学习这个免费课程来了解如何使用Deepstream,还可以拿到NVIDIA证书哟:NVIDIA DLI 又添免费课程:《基于Jetson Nano构建视频AI应用》)今天,NVIDIA最新发布...增强视频解码:对视频解码器多项改进确保了更流畅视频处理和更强性能。...新数据格式:GXF现在支持额外数据格式,包括Bayer,RAW16和3D RGBD,扩展了可以处理数据范围。...关于DeepStreamDeepStream是领先基于GStreamer软件开发工具包(SDK),使开发人员能够创建尖端视觉AI应用。

    51640

    NVIDIA DLI 又添免费课程:《基于Jetson Nano构建视频AI应用》

    本课程中材料和说明涵盖入门知识,可助您轻松上手,利用您自有 NVIDIA® Jetson Nano 上 DeepStream 运行相关应用。...您将了解 DeepStream 应用功能以及利用 DeepStream SDK 构建应用方式,探索基本概念,使能DeepStream SDK 视频流插件和分析架构;利用 Jetson Nano 上...您将学习如何: 安装设置 Jetson Nano 构建端到端 DeepStream 工作流,将原始视频输入转换为经过分析带有标注视频输出 在工作流中构建可替换输入和输出源 同时配置多个视频流 配置其他推理引擎...无外设模式 使用无外设模式(远程使用电脑)开展课程时操作 Docker 容器视频介绍和说明。...JupyterLab JupyterLab 界面和 notebook 简介 媒体播放器 如何在您计算机上设置视频流 2.

    1.2K50

    实时交通监控:YOLOv8与NVIDIA JetPack 6.0集成应用

    该系统包括使用视频存储工具包 (VST) 服务进行视频摄取和存储、使用 YOLOv8 和 DeepStream AI 感知服务进行实时对象检测和车辆跟踪,以及对车辆运动时空分析。...接下来,视频数据流入 AI 感知服务,该服务利用 NVIDIA DeepStream SDK 使用 YOLOv8 对象检测模型实现高吞吐量,然后使用 NvDCF 跟踪器进行对象跟踪。...模型转换:将模型从 PyTorch 转换为 ONNX 格式生成 TensorRT 引擎。此过程大约需要 15 到 30 分钟,生成 YOLO 部署所需以下文件:....给定时间范围内车辆交通流量热图。概念绊线或越线是指在相机平面上绘制虚拟线,用于计算在任一方向上越过线物体。轨迹是指车辆所走实际路径,由系统逐跟踪记录下来。...第一个元素是时间戳(1708598580297,Unix 时间),以视频毫秒为单位。第二个元素是位置坐标 [x,y] 或 [291,590] 数组,其中图像平面中 x=291 和 y=590。

    23410

    视频结构化 AI 推理流程

    实现思路 有一个 AI 模型与一段视频如何进行推理呢?...视频流:OpenCV 打开视频流,获取图像 前处理:图像 Resize 成模型输入 Shape 模型推理:AI 框架进行模型推理,得到输出 后处理:将输出处理成期望信息 例如,目标检测:解析框位置和类别...与外部系统,用 RPC 或 Redis,也可能推送 Kafka 内部用自己消息队列 内存共享 用在图像,以免拷贝, ID 标识 显存也预申请,队列分配,减少 Host & Device 拷贝 技术选型...首先,模型一般自定义格式,一是保护,二是方便自己使用。所以,会把原模型及其配置封装进自定义格式,还会标明推理方式、前后处理选择等。.../deepstream-sdk

    1.6K30

    利用NVIDIA迁徙学习工具包加速智能视频分析

    用于智能视频分析(IVA)迁徙学习工具包 从事任何IVA应用程序(如停车管理、关键基础设施保护、零售分析、后勤管理和访问控制)开发人员都可以从使用带有NVIDIA DeepStream SDK 3.0...用户可以携带kitti格式数据集,使用转换器将其转换为TFRecords tlt-dataset-convert [-h] -d DATASET_EXPORT_SPEC -o OUTPUT_FILENAME...1248 x 384) 图像格式:JPG, JPEG, PNG 标签格式:KITTI检测 自适应全局色调映射和静态白平衡已经被提前应用。...修剪已经证明可以提高IVA应用程序中视频吞吐量。一项研究发现ResNet-50四类检测器以每秒30速度运行,是未修剪和未优化GPU模型吞吐量3倍。...: pretrained_model_path:"OUTPUT_DIR/weights/resnet_50.hdf5" 步骤5:模型导出 一旦适应完成,模型就可以导出为DeepStream SDK可用格式

    95920

    零售端部署高精度AI计算机视觉应用程序新方法

    deepstream 是一个流分析工具包,用于构建基于人工智能应用程序,它将流数据作为来自 USB/csi 摄像机视频、文件或 rtsp 流输入,使用人工智能和计算机视觉从像素中生成洞察,以更好地了解环境...deepstream sdk 可以作为许多视频分析解决方案基础层,例如了解智能城市中交通和行人、医院中健康和安全监控、零售中自助结账和分析,deepstream 提供卓越吞吐量,适用于各种基于对象检测...除了 deepstream 以减少开发工作并提高吞吐量外,开发人员还可以使用来自迁移学习工具包 (tlt) 高精度预训练模型,使用 deepstream 进行部署。...没有提供一些指标就无法进行深度学习演示,我们模型使用 10 000 张图像进行训练,我们使用了Faster R-CNN对象检测模型,使用 resnet18 特征提取器,我们在 8 v100 dgx 上训练这些模型训练它们对于...deepstream sdk.我们还有一种方法来反向传播模型损失,以进一步推动合成数据优化并重新训练和改进模型.

    83550

    视频直播远程会议中AI关键技术探索应用

    我们看右边图,这个图就显示了RBX和MAXINE软件栈结构,它们功能都是由一组SDK提供,我们刚刚说到绿幕和超分就是由视频特效SDK提供,背景噪音剔除是由音频特效SDK提供,Face tracking...在部署上,MAXINE可以通过Kubernetes微服务方式,也可以通过DeepStream方式。同时MAXINE也提供开发SDK,用户可以根据自己需要把对应模块集成到自己系统中。...DeepStream是英伟达提出端到端视频解决方案。它基于是开源框架GStreamer,其中主要集成了两个部分:一个是GPU CODEC功能,一个是AI推理功能。...在传送过程中,数据编码格式采用是熵编码方式。 这幅图统计给出了在两种配置下(20个关键点和自适应关键点)每需要传送数据量。 我们看平均数据量,每需要传输数据不到100byte。...如果需要对ray tracing性能进行评估的话,可以使用Nsight Graphics来profiling。 上图总结了在各个模块中数据是如何交换

    1.2K40

    十几个人团队如何在短时间里开发一个AI“放牛娃”(下)

    这就是 DeepStream,它使 OneCup 能够将这些不同模型连接在一起大规模运行它们,在这里我想向您展示是构成流主要部分,以及它是如何使 OneCup创造 BETSY第一个视频流。...许多视频之间一头牛,称为跟踪器。以及活动轨道、动物和您想要对它们分析。...以某种形式生成可以放入数据库或放入云中数据,最后您想要在视频顶部添加字幕或购买您在视觉分析中发现内容,这当然是合成和使用 Deepstream,您可以完成所有这些工作,而且速率非常合理,并且可以在云端或边缘运行...这项技术惊人之处在于,通过对onnx格式模型使用自定义解析器,你可以将其集成到Nvidiadeepstream中,构建一个可以做任何你能想象到事情管道。...这就是我们客户实际看到使用这个界面,我们客户能够看到他们摄像机,查看几个月前存档视频

    58130
    领券