视频监控相关笔记

一、QT 之 QTreeWidget 树形控件

Qt编程指南,Qt新手教程,Qt Programming Guide

一个树形结构的节点中的图表文本 、附带数据的添加:

QTreeWidgetItem* TourTreeWnd::InsertNode(NetNodeInfo node, QTreeWidgetItem* parent_item)  
{  // 创建一个QVariant对象,用于存储NetNodeInfo类型的node  QVariant var;  var.setValue(node);  // 初始化一个指向QTreeWidgetItem的指针,用于存储新创建的节点  QTreeWidgetItem* Item = NULL;  // 检查parent_item是否为NULL,如果是,则表示要插入的节点是顶级节点  if (parent_item == NULL) {  // 为顶级节点创建一个新的QTreeWidgetItem对象  Item = new QTreeWidgetItem(m_tree.get());  // 设置新节点的第一个列的文本为node的Name属性  Item->setText(0, (QString)node.Name);  // 设置新节点的第一个列的工具提示与文本相同  Item->setToolTip(0, Item->text(0));  // 将新节点作为顶级节点添加到树形控件中  m_tree->addTopLevelItem(Item);  // 根据node的类型设置图标  // 如果节点类型是NodeType_TOURTASK,则使用特定类型的图标  if (node.Type == NodeType::NodeType_TOURTASK) {  Item->setIcon(0, QIcon(GetIconByNodetype(node.Type)));  }  // 注意:这里没有处理非NodeType_TOURTASK类型顶级节点的图标设置,可能是个遗漏  // 将QVariant对象var作为用户自定义数据存储在节点的第一个列上  Item->setData(0, Qt::UserRole, var);  // 设置节点第一个列的大小提示为30x30  Item->setSizeHint(0, QSize(30, 30));  }  // 如果parent_item不为NULL,则表示要插入的节点是子节点  else {  // 为子节点创建一个新的QTreeWidgetItem对象,并指定parent_item为其父节点  Item = new QTreeWidgetItem(parent_item);  // 设置子节点的大小提示为30x30  Item->setSizeHint(0, QSize(30, 30));  // 设置子节点的第一个列的文本为node的Name属性  Item->setText(0, (QString)node.Name);  // 设置子节点的第一个列的工具提示与文本相同  Item->setToolTip(0, Item->text(0));  // 根据node的类型或设备状态设置图标  // 如果节点类型是NodeType_DEVICE,则根据设备主类型、子类型和状态获取图标  if (node.Type == NodeType::NodeType_DEVICE) {  Item->setIcon(0, QIcon(GetIconByDevStatus(node.DevMainType, node.DevSubType, node.Status)));  }  // 如果不是NodeType_DEVICE类型,则根据节点类型获取图标  else {  Item->setIcon(0, QIcon(GetIconByNodetype(node.Type)));  }  // 将QVariant对象var作为用户自定义数据存储在节点的第一个列上  Item->setData(0, Qt::UserRole, var);  }  // 显示树形控件(通常不是必需的,因为可能在其他地方已经设置为可见)  m_tree->show();  // 展开树形控件中的所有节点,以便新插入的节点可见  m_tree->expandAll();  // 返回新创建的节点指针,以便调用者可以使用它  return Item;  
}

其中注意以下几点:

二、视频播放

1. 主辅码流区别

2.  RTSP

3.  SDK的调用案例:

#pragma once#include <memory>
#ifdef _WINDOWS
#include <Windows.h>
#ifdef  LIBRTSPCLINET_SDK_EXPORTS
#define LIBRTSPCLINET_API __declspec(dllexport)
#else
#define LIBRTSPCLINET_API __declspec(dllimport)
#endif
#else  
#define LIBRTSPCLINET_API
#endif#include "Common.h"using namespace std;class LIBRTSPCLINET_API LibRtspClientManager
{
public:static LibRtspClientManager& getInstance() {static LibRtspClientManager instance;return instance;}/* @ 初始化SDK:@ 参数:onLibRtspClientDateCB 数据回调函数地址onLibRtspClientMsgCB  消息回调函数地址@ 返回: bool*/bool Init();/* @ 反初始化SDK:@ 参数:@ 返回: void*/void UnInit();/* @ 创建RTSP Client:@ 参数:std::string url : rtsp urlTransProtocol trans_protocol : 0-udp, 1-tcpint timeout : 超时时间,单位秒@ 返回: int32_t rtsp session id*/uint32_t CreateRtspClient(std::string url,std::string username, std::string password,TransProtocol trans_protocol, RtspCallBack* callback, int timeout);bool ReleaseRtspClient(uint32_t session_id);/* @ 连接服务器* @ 异步通知,rtsp连接情况在onLibRtspClientMsgCB反馈*/bool Connect(uint32_t session_id);bool Play(uint32_t session_id, std::string params_json);bool Control(uint32_t session_id, std::string params_json);bool Pause(uint32_t session_id);// 恢复播放bool Resume(uint32_t session_id);// 从指定位置恢复播放bool Resume(uint32_t session_id, float npt);bool Stop(uint32_t session_id);void WaitForStop(uint32_t session_id);
private:LibRtspClientManager();virtual ~LibRtspClientManager();class LibRtspClientPriv;std::shared_ptr<LibRtspClientPriv> m_priv;
};

4. 一个webSocket第三方库;easywsclient.hpp   easywsclient.cpp  

Easywsclient: 强大且简单的C++ WebSocket客户端库-CSDN博客

下文代码摘自gitcode.com中: 

#include "easywsclient.hpp"
//#include "easywsclient.cpp" // <-- include only if you don't want compile separately
#ifdef _WIN32
#pragma comment( lib, "ws2_32" )
#include <WinSock2.h>
#endif
#include <assert.h>
#include <stdio.h>
#include <string>using easywsclient::WebSocket;
static WebSocket::pointer ws = NULL;void handle_message(const std::string & message)
{printf(">>> %s\n", message.c_str());if (message == "world") { ws->close(); }
}int main()
{
#ifdef _WIN32INT rc;WSADATA wsaData;rc = WSAStartup(MAKEWORD(2, 2), &wsaData);if (rc) {printf("WSAStartup Failed.\n");return 1;}
#endifws = WebSocket::from_url("ws://localhost:8126/foo");assert(ws);ws->send("goodbye");ws->send("hello");while (ws->getReadyState() != WebSocket::CLOSED) {ws->poll();ws->dispatch(handle_message);}delete ws;
#ifdef _WIN32WSACleanup();
#endifreturn 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/430979.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++: unordered系列关联式容器

目录 1. unordered系列关联式容器1.1 unordered_map1.2 unordered_set 2. 哈希概念3. 哈希冲突4. 闭散列5. 开散列 博客主页: 酷酷学 感谢关注!!! 正文开始 1. unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时…

2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队

9 月 20 日&#xff0c;2024 天池云原生编程挑战赛决赛答辩完美落幕&#xff0c;12 支进入决赛的团队用精彩的答辩&#xff0c;为历时 3 个月的大赛画下了圆满的句号。其中&#xff0c;来自中山大学的陈泓仰以及来自昆仑数智的冉旭欣、沈鑫糠、武鹏鹏&#xff0c; 以出色的方案…

[深度学习]神经网络

1 人工神经网络 全连接神经网络 2 激活函数 隐藏层激活函数由人决定输出层激活函数由解决的任务决定: 二分类:sigmoid多分类:softmax回归:不加激活(恒等激活identify)2.1 sigmoid激活函数 x为加权和小于-6或者大于6,梯度接近于0,会出现梯度消失的问题即使取值 [-6,6] ,…

乌克兰因安全风险首次禁用Telegram

据BleepingComputer消息&#xff0c;乌克兰国家网络安全协调中心 &#xff08;NCCC&#xff09; 以国家安全为由&#xff0c;已下令限制在政府机构、军事单位和关键基础设施内使用 Telegram 消息应用程序。 这一消息通过NCCC的官方 Facebook 账号对外发布&#xff0c;在公告中乌…

kubernetes网络(二)之bird实现节点间BGP互联的实验

摘要 上一篇文章中我们学习了calico的原理&#xff0c;kubernetes中的node节点&#xff0c;利用 calico 的 bird 程序相互学习路由&#xff0c;为了加深对 bird 程序的认识&#xff0c;本文我们将使用bird进行实验&#xff0c;实验中实现了BGP FULL MESH模式让宿主相互学习到对…

AI大模型日报#0923:李飞飞创业之后首个专访、华为云+腾讯音乐发布昇腾适配方案

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;、“智谱AI”&#xff08;glm-4-0520&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅…

深兰科技陈海波应邀出席2024长三角论坛暨虹桥人才创新发展大会

近日&#xff0c;以“人才引领 联动共融——国际化创新与长三角协同”为主题的“2024长三角人才发展论坛暨虹桥人才创新发展大会”在上海国际会议中心隆重举行。上海市委常委、组织部部长、市委人才办主任张为应邀出席并做大会致辞。 深兰科技创始人、董事长陈海波作为特邀企业…

数据结构强化(直播课)

应用题真题分析&备考指南 (三)线性表的应用 (六)栈、队列和数组的应用 &#xff08;四&#xff09;树与二叉树的应用 1.哈夫曼&#xff08;Huffman&#xff09;树和哈夫曼编码 2.并查集及其应用&#xff08;重要&#xff09; &#xff08;四&#xff09;图的基本应用 …

计算机组成原理(笔记4)

定点加减法运算 补码加法&#xff1a; 补码减法&#xff1a; 求补公式&#xff1a; 溢出的概念 在定点小数机器中,数的表示范围为|&#xff58;|<1。在运算过程中如出现大于1的现象,称为 “溢出”。 上溢&#xff1a;两个正数相加&#xff0c;结果大于机器所能表示的最…

【算法】堆与优先级队列

【ps】本篇有 4 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;最后一块石头的重量 .1- 题目解析 .2- 代码编写 2&#xff09;数据流中的第 K 大元素 .1- 题目解析 .2- 代码编写 3&#xff09;前K个高频单词 .1- 题目解析 .2- 代码编写 4&#xf…

d2l | 目标检测数据集:RuntimeError: No such operator image::read_file

目录 1 存在的问题2 可能的解决方案3 最终的解决方案3.1 方案一&#xff08;我已弃用&#xff09;3.2 方案二&#xff08;基于方案一&#xff09; 1 存在的问题 李沐老师提供的读取香蕉数据集的函数如下&#xff1a; def read_data_bananas(is_trainTrue):""…

yolov10算法原理

文章目录 1. 模型效果2. 模型特点2.1 无NMS训练的一致性双重分配策略 (Consistent Dual Assignments for NMS-free Training)双重标签分配 (Dual Label Assignments)一致匹配度量&#xff08;Consistent Match. Metric&#xff09;一对一分配在一对多结果中的频率 2.2. 效率-准…

C++基础:第一个C++程序

初学C #include<iostream> int main() {std::cout << "Enter two numbers:" << std::endl;int v1 0, v2 0;std::cin >> v1 >> v2;std::cout << "The sum of "<< v1 << " and " << v2&…

Ubuntu磁盘不足扩容

1.问题 Ubuntu磁盘不足扩容 2.解决方法 安装一下 sudo apt-get install gpartedsudo gparted

JavaWeb--小白笔记07:servlet对表单数据的简单处理

这里的servlet对表单数据的处理是指使用IDEA创建web工程&#xff0c;再创建html和class文件进行连接&#xff0c;实现html创建一个表单网页&#xff0c;我们对网页中的表单进行填充&#xff0c;可以通过class文件得到网页我们填充的内容进行打印到控制台。 一登录系统页面---h…

【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式

前言&#xff1a; 前三篇如下&#xff1a; 【速成Redis】01 Redis简介及windows上如何安装redis-CSDN博客 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客 【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、…

自然语言处理-基于注意力机制的文本匹配

背景&#xff1a; 任务三&#xff1a;基于注意力机制的文本匹配 输入两个句子判断&#xff0c;判断它们之间的关系。参考ESIM&#xff08;可以只用LSTM&#xff0c;忽略Tree-LSTM&#xff09;&#xff0c;用双向的注意力机制实现。 参考 《神经网络与深度学习》 第7章 Reaso…

rar文件怎么打开?这几款软件压缩和查看很方便!

在这个数字化信息爆炸的时代&#xff0c;我们每天都会接触到各种各样的文件&#xff0c;其中RAR格式文件以其高压缩率和良好的文件保护特性&#xff0c;成为了许多人分享和存储大文件的首选。然而&#xff0c;面对这样一个看似“神秘”的文件格式&#xff0c;不少朋友可能会感到…

如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查

本文作者&#xff1a;阿里云Flink SQL负责人&#xff0c;伍翀&#xff0c;Apache Flink PMC Member & Committer 众多数据领域的专业人士都很熟悉Apache Flink&#xff0c;它作为流式计算引擎&#xff0c;流批一体&#xff0c;其核心在于其强大的分布式流数据处理能力&…

简单多状态dp第一弹 leetcode -面试题17.16.按摩师 -213.打家劫舍II

a​​​​​​​面试题 17.16. 按摩师 按摩师 题目: 分析: 使用动态规划解决 状态表示: dp[i] 表示&#xff1a;选择到 i 位置时&#xff0c;此时的最长预约时长。 但是我们这个题在 i 位置的时候&#xff0c;会面临 选择 或者 不选择 两种抉择&#xff0c;所依赖的状态需要…