首页
学习
活动
专区
工具
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.2K30

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

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

2K60
  • 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.7K3429

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

    主讲人 | 何琨 英伟达 量子位编辑 | 公众号 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 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.5K42

    利用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.4K31

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

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

    5.4K31

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

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

    6.6K61

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

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

    4K70

    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.3K43

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

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

    4.2K52

    实时交通监控: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。

    28510

    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

    视频结构化 AI 推理流程

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

    1.6K30

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

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

    60240

    利用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可用的格式

    96720

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

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

    84150

    视频直播远程会议中的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格式的模型使用自定义解析器,你可以将其集成到Nvidia的deepstream中,并构建一个可以做任何你能想象到的事情的管道。...这就是我们的客户实际看到的,使用这个界面,我们的客户能够看到他们的摄像机,并查看几个月前的存档视频。

    59430
    领券