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

RTSP|RTMP流如何指定坐标位置和分辨率获取RGB数据实时渲染和算法分析

接上一篇blog:同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析-CSDN博客

我们知道,由于解码后的YUV或RGB数据size比较大,如果想把转换后的RGB数据传给比如python算法的话,数据量还是挺大,为此,开发者提出这样的技术诉求,是不是可以按照指定的坐标和宽高,给出RGB数据,毕竟他们知道哪块区域是需要做算法分析的。

针对此种情况,我们的设计如下:

​
/** SmartPlayer.cs* Author: https://daniusdk.com* WeChat: xinsheng120*/int x = 100;
int y = 100;
int clip_width = 960;
int clip_height = 540;if (x < 0 || y < 0)return;clip_width = (int)ByteAlign((UInt32)clip_width, 2);
clip_height = (int)ByteAlign((UInt32)clip_height, 2);if (x + clip_width > video_frame.width_ || y + clip_height > video_frame.height_)return;rgb_frame.format_ = (int)NT.NTSmartPlayerDefine.NT_SP_E_VIDEO_FRAME_FORMAT.NT_SP_E_VIDEO_FRAME_FORMAT_ARGB;
rgb_frame.width_ = clip_width;
rgb_frame.height_ = clip_height;rgb_frame.timestamp_ = video_frame.timestamp_;
rgb_frame.stride0_ = clip_width * 4;
rgb_frame.stride1_ = 0;
rgb_frame.stride2_ = 0;
rgb_frame.stride3_ = 0;Int32 argb_size = rgb_frame.stride0_ * rgb_frame.height_;rgb_frame.plane0_ = Marshal.AllocHGlobal(argb_size);IntPtr in_plane0 = video_frame.plane0_ + video_frame.stride0_ * y + x;
IntPtr in_plane1 = video_frame.plane1_ + video_frame.stride1_ * (y / 2) + (x / 2);
IntPtr in_plane2 = video_frame.plane2_ + video_frame.stride2_ * (y / 2) + (x / 2);NTSmartPlayerSDK.NT_SP_I420ToARGB(in_plane0, video_frame.stride0_, in_plane1, video_frame.stride1_, in_plane2, video_frame.stride2_,rgb_frame.plane0_, rgb_frame.stride0_, clip_width, clip_height);

比如我们需要截取的坐标x 100, y 100, 宽 960 高 540,那么处理后的数据,展示出来效果如右图:

左侧是原始的2560*1440的,右侧是按设定坐标,截取960*540分辨率的数据播放的,右侧的数据,投递给python或其他视觉算法,处理效率会显著提升。

以上是回调YUV数据的同时,按照用户使用场景,截取指定坐标和分辨率的RGB数据的设计参考。感兴趣的开发者,可以单独跟我沟通探讨。

相关文章:

RTSP|RTMP流如何指定坐标位置和分辨率获取RGB数据实时渲染和算法分析

接上一篇blog&#xff1a;同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析-CSDN博客 我们知道&#xff0c;由于解码后的YUV或RGB数据size比较大&#xff0c;如果想把转换后的RGB数据传给比如python算法的话&#xff0c;数据量还是挺大&#xff0c;为此&#xff…...

基于ssm+vue+uniapp的英语学习交流平台小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

如何判断一个TimerTask是否已经完成

如何判断一个TimerTask是否已经完成 判断TimerTask是否已经完成并不是TimerTask或Timer类直接提供的功能&#xff0c;因为TimerTask一旦被提交给Timer执行&#xff0c;它就在一个独立的线程中运行&#xff0c;而Timer类并不直接提供方法来查询或控制任务的执行状态。 然而&am…...

Android常用面试题

1、如何理解Java的多态&#xff1f;其中&#xff0c;重载和重写有什么区别&#xff1f; 2、谈一下JVM内存区域划分&#xff1f;哪部分是线程公有的&#xff0c;哪部分是私有的&#xff1f; 3、final关键字的用法&#xff1f; 4、死锁是怎么导致的&#xff1f;如何定位死锁 5、数…...

JSON与Jsoncpp库:数据交换的灵活选择

目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中&#xff0c;数据交换格式扮演着至关重要的角色。JSON&#xff08;JavaScript Object Notati…...

salesforce rich text 字段支持html中内嵌JavaScript吗

Salesforce 的富文本字段&#xff08;Rich Text Field&#xff09;不支持在 HTML 中内嵌 JavaScript。为了安全&#xff0c;Salesforce 会自动移除或过滤用户输入中的任何 JavaScript 代码。这是为了防止跨站点脚本&#xff08;XSS&#xff09;攻击&#xff0c;从而保护 Salesf…...

Ubuntu24.04、22.04或20.04安装Golang方法教程

在Ubuntu Linux&#xff08;例如 Ubuntu 24.04、22.04 或 20.04&#xff09;上安装Go&#xff08;Golang&#xff09;是一个简单的过程。我们可以使用默认系统存储库使用本教程中给出的命令下载开源 Go 编程语言&#xff0c;轻松构建简单、可靠和高效的软件。 Go语言由Google…...

学习记录第二十二天

time函数与localtime函数 在Linux环境下使用C语言处理时间&#xff0c;通常会涉及到几个重要的头文件和函数。主要的头文件是 <time.h>&#xff0c;它包含了处理时间的各种函数和数据结构。 1. 数据结构 1.time_t: 一个类型定义&#xff0c;用于存储时间值&#xff0c…...

红酒与艺术展览:品味艺术与风味的双重盛宴

当艺术的魅力与红酒的醇香交织在一起&#xff0c;一场别开生面的盛宴便悄然展开。今天&#xff0c;让我们一同走进这场红酒与艺术展览的邂逅&#xff0c;品味艺术与风味的双重盛宴。 一、艺术展览的瑰丽世界 艺术展览&#xff0c;如同一座瑰丽的宝库&#xff0c;汇聚了无数艺…...

1Panel配置

1. 脚本安装 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh2. 配置镜像加速 在容器-> 配置中设置&#xff0c;否则安装软件会失败。 https://docker.211678.top https://docker.1panel.live …...

场外期权是如何定价的?场外期权定价的基本原理是什么?

场外期权的定价通常基于多种复杂的因素&#xff0c;以下是一些场外期权主要的影响因素和常见的定价方法&#xff1a; 影响场外期权定价的因素&#xff1a; 标的资产价格&#xff1a;标的资产当前的市场价格是定价的基础。标的资产价格波动率&#xff1a;波动率反映了标的资产价…...

vue中数据持久化

在Vue中&#xff0c;数据持久化通常指的是将Vue组件或应用中的数据保存到用户的浏览器或设备的存储中&#xff0c;以便在用户的会话&#xff08;session&#xff09;或跨会话&#xff08;如重新加载页面或重新打开浏览器&#xff09;中保持这些数据。Vue本身并不直接提供数据持…...

小白零基础学数学建模系列-Day3-线性回归模型的构建与评估

文章目录 1 线性回归基础1.1 线性回归概念与应用1.2 数学原理与推导1.3 线性回归的实现 2 案例分析&#xff1a;房价预测2.1 加载数据2.2 数据预处理2.3 探索性数据分析2.4 观察选择特征2.5 准备训练模型的数据2.6 将数据拆分为训练集和测试集2.7 训练和测试模型2.8 模型评估 3…...

Flutter中的 extended_nested_scroll_view 库:介绍与使用指南

在开发Flutter应用时&#xff0c;处理复杂的滚动效果是一项常见的任务。Flutter提供了NestedScrollView来实现可折叠的应用栏与滚动列表的结合&#xff0c;但在某些情况下&#xff0c;NestedScrollView可能不够强大。为了解决这些问题&#xff0c;我们可以使用extended_nested_…...

Elasticsearch 综合搜索案例解析

Elasticsearch 是一个功能强大的搜索引擎&#xff0c;它不仅支持全文搜索&#xff0c;还提供了排序、分页、高亮显示等多种搜索结果处理功能。通过综合使用这些功能&#xff0c;我们可以构建出丰富而高效的搜索应用。本文将通过一个具体的案例&#xff0c;介绍如何在 Elasticse…...

Web存储革命:揭秘JavaScript的会话存储(sessionStorage)

标题&#xff1a;Web存储革命&#xff1a;揭秘JavaScript的会话存储&#xff08;sessionStorage&#xff09; 在当今的Web开发中&#xff0c;状态管理和数据持久化是构建交互式应用的关键。JavaScript提供了多种客户端存储解决方案&#xff0c;其中会话存储&#xff08;sessio…...

基于python的百度迁徙迁入、迁出数据分析(九)

副标题&#xff1a;从百度迁徙数据看——人口虹吸效应 人口虹吸效应&#xff1a;人口虹吸效应是指大城市或中心城市因其经济、文化、教育、医疗等资源的优势&#xff0c;吸引周边地区的人口、资本和其他资源向其集中的一种现象。这种效应在城市化进程中尤其明显&#xff0c;通…...

2025上海礼品展 华东礼品工艺品展览会

2025第25届上海国际礼品及家居用品展 在璀璨繁华的上海&#xff0c;一场盛大的礼品盛宴即将拉开帷幕。2025年上海国际礼品及 家居用品展览会(简称“华礼展”)&#xff0c;作为华东地区乃至全国范围内备受瞩目的礼 品行业盛会&#xff0c;将于2025年6月29日至7月1日在上海新国…...

Flink开发(一):概述与基础

目录 1. Flink概述 1.1 什么是Flink&#xff1f; 1.2 Flink的主要特点 2. Flink的核心组件 2.1 Flink架构 2.2 数据流模型 3. Flink的基础应用 3.1 开发环境配置 3.3 数据源和数据接收器 4. Flink的高级功能 4.1 状态管理与容错 4.2 窗口操作 5. Flink的应用场景 …...

GD32E503实现串口中断收发功能

如有技术问题及技术需求请加作者微信! 源码下载链接:代码下载 亲测可用实现GD32E503库函数串口数据收发功能: #include "gd32e50x.h" #include "gd32e503v_eval.h" #include "systick.h" #include <stdio.h> #include "user_uart…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...