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

pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现

目录

  • 背景
  • pycharm安装配置
  • 代码实现
    • 创建本地视频配置 和 推流配置
    • 视频帧的处理和检测框绘制
    • 主要流程
    • 遇到的一些问题

背景

首先这个基于完整安装配置了anaconda和yolo11的环境,如果需要配置开始的话,先看下专栏里另一个文章。
这次的目的是实现拉取视频流,做检测并绘制对象检测框。之后,将结果保存本地视频,并且推流到对应的rtmp服务器,便于调试也可以实时显示处理结果视频。

pycharm安装配置

安装就不提了吧,到官网下载个免费的社区版本就ok了,安装也基本不会有啥问题。
安装完成后,打开你的本地ultralytics文件夹作为项目,然后在设置里加一下解释器:
在这里插入图片描述
记得选对你的anaconda配置的环境,右边的列表能看到你环境中安装的库。

代码实现

创建本地视频配置 和 推流配置

依据传入的opencv捕获的视频流对象,获取本地保存视频的一些参数,创建video_writer,并记录推流参数。

def create_video_writer(cap_video, path_output):# 获取视频流参数width = int(cap_video.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap_video.get(cv2.CAP_PROP_FRAME_HEIGHT))fps = int(cap_video.get(cv2.CAP_PROP_FPS))# 初始化本地视频保存fourcc = cv2.VideoWriter.fourcc(*'mp4v')out_writer = cv2.VideoWriter(path_output, fourcc, fps, (width, height))# 推流的参数配置command = ['ffmpeg','-y',                    # 覆盖输出文件(如果存在)'-f', 'rawvideo',        # 输入格式'-pix_fmt', 'bgr24',     # OpenCV 的像素格式'-s', f'{width}x{height}', # 分辨率'-r', str(fps),          # 帧率'-i', '-',               # 从标准输入读取'-c:v', 'libx264',       # 输出视频编码'-preset', 'ultrafast',       # 编码速度预设'-f', 'flv',             # 输出格式(RTMP 需要 flv)RTMP_SERVER_URL]print("视频参数:fps " + str(fps))return out_writer, command

视频帧的处理和检测框绘制

依据传入的模型对象和视频帧,去绘制检测框和文本,之后返回结果的图像以及结果数据。

def process_frame(model_in, frame_in):results = model_in.predict(frame_in)# 绘制检测框for result in results:for box in result.boxes:x1, y1, x2, y2 = map(int, box.xyxy[0])conf = box.conf[0].item()cls_id = int(box.cls[0])label = f"{model_in.names[cls_id]} {conf:.2f}"print(label)# 绘制矩形和标签draw_rounded_rect(frame_in, (x1, y1), (x2, y2), (0, 255, 0), 2,cv2.LINE_AA, 10)  # 红色圆角矩形cv2.putText(frame_in, label, (x1, y1 - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)return frame_in, results

draw_rounded_rect 单纯为了绘制个圆角框,可以简单的用cv2.rectangle(frame_in, (x1, y1), (x2, y2), (0, 255, 0), 2, cv2.LINE_AA)画。

def draw_rounded_rect(img, pt1, pt2, color, thickness, line_type, corner_radius):x1, y1 = pt1x2, y2 = pt2# 绘制四个角的圆弧cv2.ellipse(img, (x1 + corner_radius, y1 + corner_radius), (corner_radius, corner_radius), 180, 0, 90, color, thickness, line_type)cv2.ellipse(img, (x2 - corner_radius, y1 + corner_radius), (corner_radius, corner_radius), 270, 0, 90, color, thickness, line_type)cv2.ellipse(img, (x1 + corner_radius, y2 - corner_radius), (corner_radius, corner_radius), 90, 0, 90, color, thickness, line_type)cv2.ellipse(img, (x2 - corner_radius, y2 - corner_radius), (corner_radius, corner_radius), 0, 0, 90, color, thickness, line_type)# 绘制四条边cv2.line(img, (x1 + corner_radius, y1), (x2 - corner_radius, y1), color, thickness, line_type)cv2.line(img, (x1, y1 + corner_radius), (x1, y2 - corner_radius), color, thickness, line_type)cv2.line(img, (x1 + corner_radius, y2), (x2 - corner_radius, y2), color, thickness, line_type)cv2.line(img, (x2, y1 + corner_radius), (x2, y2 - corner_radius), color, thickness, line_type)

主要流程

流程主要就是加载模型,捕获对应的rtmp视频流,跑循环一帧帧解析数据,之后把帧的绘制结果写入本地的视频文件,同时帧结果也通过ffmpeg库推到对应的RTMP server去播放。最后终端清除资源。

# 加载模型
model = YOLO(MODEL_PATH)
# 初始化视频流
cap = cv2.VideoCapture(RTSP_URL)
if not cap.isOpened():raise ValueError("无法打开视频流!")
print("视频流已连接...")
out_writer, ffmpeg_command = create_video_writer(cap, OUTPUT_VIDEO_PATH)
if ENABLE_FEATURE_STREAM:# 启动 FFmpeg 进程ffmpeg_proc = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
if ENABLE_FEATURE_DISPLAY:cv2.namedWindow("DISPLAY", cv2.WINDOW_NORMAL)
print("本地视频写入配置完成...")
try:while True:ret, frame = cap.read()if not ret:print("视频流中断,尝试重连...")cap.release()cap = cv2.VideoCapture(RTSP_URL)time.sleep(1)continue# 处理单帧画面out_frame, _ = process_frame(model, frame)if ENABLE_FEATURE_DISPLAY:frame_small = cv2.resize(out_frame, (1080, 900))cv2.waitKey(1)cv2.imshow("DISPLAY", frame_small)if ENABLE_FEATURE_STREAM:# 推流到服务器if ffmpeg_proc.stdin:ffmpeg_proc.stdin.write(out_frame.tobytes())# 保存到本地out_writer.write(out_frame)
except KeyboardInterrupt:print("用户中断操作")
finally:# 清理资源cap.release()out_writer.release()if ENABLE_FEATURE_STREAM:if ffmpeg_proc.stdin:ffmpeg_proc.stdin.close()ffmpeg_proc.terminate()print("等待进程退出")ffmpeg_proc.wait()print("资源已释放")

然后前面的import,就是缺什么装什么,直接在conda环境里pip装就好了。

from ultralytics import YOLO
import cv2
import time
import subprocess
import numpy as np# 参数
ENABLE_FEATURE_STREAM = True
ENABLE_FEATURE_DISPLAY = True
RTSP_URL = "rtmp://xxxxx"  # RTSP 或 HTTP 流地址
OUTPUT_VIDEO_PATH = "YOLO11OutPut.mp4"  # 本地保存路径
RTMP_SERVER_URL = "rtmp://xxxxxx"  # 推流服务器地址
MODEL_PATH = "yolo11n.pt"

效果就是跑起来前端会有实时视频,并且本地会有mp4保存,远端服务器也能实时看到视频。
在这里插入图片描述
至于什么效果啥的就是后续自己调整的事情了。

遇到的一些问题

  • 第一个是图里后续加了中文标签,默认opencv字体不支持绘制中文会是?问号。
    有两个方法一个是去改yolo的绘制代码,比较麻烦,我最后用的是转PIL绘制,当然需要下字体文件SimHei.ttf丢在目录下。标签的可以在项目内的ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml找到识别的标签集合,自己简单补个对应中文标签组。至于代码不难,就参考着自己调整吧:
from PIL import Image, ImageDraw, ImageFont
cn_names = {0: "人", 1: "自行车", 2: "汽车", 3: '摩托车', 4: '飞机', 5: '大巴', 6: '火车', 7: '卡车', 8: '船', 9: '信号灯'
}
font_path = "SimHei.ttf"
font_size = 20
font = ImageFont.truetype(font_path, font_size)
def put_text_cn(img, text, pos, color, font):# 转换 OpenCV 图像为 PIL 格式img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))draw = ImageDraw.Draw(img_pil)# 计算文本尺寸并绘制背景框bbox = draw.textbbox((0, 0), text, font=font)text_width = bbox[2] - bbox[0]  # 宽度 = 右边界 - 左边界text_height = bbox[3] - bbox[1]  # 高度 = 下边界 - 上边界x, y = posbg_pos = (x, y - text_height-5, x + text_width, y)# draw.rectangle(bg_pos, fill=color)# 绘制文本draw.text((bg_pos[0], bg_pos[1]), text, font=font, fill=(255, 255, 255))  # 白色文字# 转换回 OpenCV 格式return cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)
  • 第二个是一开始跑yolo的时候遇到过报“NotImplementedError: Could not run 'torchvision::nms“错误。查了下是已安装库版本的问题,参考https://stackoverflow.com/questions/75103127/getting-notimplementederror-could-not-run-torchvisionnms-with-arguments-fr
    uninstall对应的torch库然后重新安装官网链接安装一次试试~
  • 还有就是如果下载模型异常,也是跑不起来的,网络实在不行可以考虑直接去yolo的文档里找预训练的模型链接,把模型下下来丢项目根目录先:
    在这里插入图片描述

相关文章:

pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现

目录 背景pycharm安装配置代码实现创建本地视频配置 和 推流配置视频帧的处理和检测框绘制主要流程遇到的一些问题 背景 首先这个基于完整安装配置了anaconda和yolo11的环境,如果需要配置开始的话,先看下专栏里另一个文章。 这次的目的是实现拉取视频流…...

C++编译问题——1模板函数的实现必须在头文件中

今天编译数据结构时&#xff0c;遇见一个编译错误 假设你有一个头文件 SeqList.h 和一个源文件 SeqList.cpp。 SeqList.h #ifndef SEQLIST_H #define SEQLIST_H#include <stdexcept> #include <iostream>template<typename T> class SeqList { private:sta…...

深度学习PyTorch之数据加载DataLoader

深度学习pytorch之简单方法自定义9类卷积即插即用 文章目录 数据加载基础架构1、Dataset类详解2、DataLoader核心参数解析3、数据增强 数据加载基础架构 核心类关系图 torch.utils.data ├── Dataset (抽象基类) ├── DataLoader (数据加载器) ├── Sampler (采样策略)…...

使用Beanshell前置处理器对Jmeter的请求body进行加密

这里我们用HmacSHA256来进行加密举例&#xff1a; 步骤&#xff1a; 1.先获取请求参数并对请求参数进行处理&#xff08;处理成String类型&#xff09; //处理请求参数的两种方法&#xff1a; //方法一&#xff1a; //获取请求 Arguments args sampler.getArguments(); //转…...

前端面试:如何减少项目里面 if-else?

在前端开发中&#xff0c;大量使用 if-else 结构可能导致代码调试困难、可读性降低和冗长的逻辑。不妨考虑以下多种策略来减少项目中的 if-else 语句&#xff0c;提高代码的可维护性和可读性&#xff1a; 1. 使用对象字面量替代 用对象字面量来替代 if-else 语句&#xff0c;…...

05.基于 TCP 的远程计算器:从协议设计到高并发实现

&#x1f4d6; 目录 &#x1f4cc; 前言&#x1f50d; 需求分析 &#x1f914; 我们需要解决哪些问题&#xff1f; &#x1f3af; 方案设计 &#x1f4a1; 服务器架构 &#x1f680; 什么是协议&#xff1f;为什么要设计协议&#xff1f; &#x1f4cc; 结构化数据的传输问题 …...

Matlab:矩阵运算篇——矩阵数学运算

目录 1.矩阵的加法运算 实例——验证加法法则 实例——矩阵求和 实例——矩阵求差 2.矩阵的乘法运算 1.数乘运算 2.乘运算 3.点乘运算 实例——矩阵乘法运算 3.矩阵的除法运算 1.左除运算 实例——验证矩阵的除法 2.右除运算 实例——矩阵的除法 ヾ(&#xffe3;…...

git reset的使用,以及解决还原后如何找回

文章目录 git reset 详解命令作用常用参数1. --soft2. --mixed&#xff08;默认参数&#xff0c;可省略&#xff09;3. --hard4. 提交引用 总结 git reset --hard HEAD^ 还原代码如何找回&#xff1f;利用 git reflog找回 git reset 详解 git reset 是 Git 中一个功能强大且较…...

react中字段响应式

class中用法: import React, { Component } from react export default class Index extends Component<any, any> { constructor(props) { super(props) this.state { settingInfo: {}, } } async componentDidMount() { let settingInfo awa…...

vue中,watch里,this为undefined的两种解决办法

提示&#xff1a;vue中&#xff0c;watch里&#xff0c;this为undefined的两种解决办法 文章目录 [TOC](文章目录) 前言一、问题二、方法1——使用function函数代替箭头函数()>{}三、方法2——使用that总结 前言 ‌‌‌‌‌尽量使用方法1——使用function函数代替箭头函数()…...

智能客服意图识别:结合知识库数据构建训练语料的专业流程

智能客服意图识别&#xff1a;结合知识库数据构建训练语料的专业流程 构建基于知识库的智能客服意图识别模型&#xff0c;需要综合运用 NLP&#xff08;自然语言处理&#xff09;、知识图谱、机器学习 等技术&#xff0c;确保意图识别的准确性和覆盖度。以下是专业的流程&…...

Spring Boot集成Spring Statemachine

Spring Statemachine 是 Spring 框架下的一个模块&#xff0c;用于简化状态机的创建和管理&#xff0c;它允许开发者使用 Spring 的特性&#xff08;如依赖注入、AOP 等&#xff09;来构建复杂的状态机应用。以下是关于 Spring Statemachine 的详细介绍&#xff1a; 主要特性 …...

压缩空气储能仿真simulink模型

压缩空气储能仿真simulink模型&#xff0c;适合matlab 2017及以上版本 CompressingGas.slx , 40474...

Tomcat 安装

一、Tomcat 下载 官网&#xff1a;Apache Tomcat - Welcome! 1.1.下载安装包 下载安装包&#xff1a; wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz 安装 javajdk。 yum install java-1.8.0-openjdk.x86_64 -y /etc/altern…...

贪心算法和遗传算法优劣对比——c#

项目背景&#xff1a;某钢管厂的钢筋原材料为 55米&#xff0c;工作需要需切割 40 米&#xff08;1段&#xff09;、11 米&#xff08;15 段&#xff09;等 4 种规格 &#xff0c;现用贪心算法和遗传算法两种算法进行计算&#xff1a; 第一局&#xff1a;{ 40, 1 }, { 11, 15…...

系统开发资源

一、前端篇 1.1 菜鸟CSS教程 1.2 HTML/CSS/JS 在线工具 二、后端篇 三、其他篇 3.1 菜鸟官网 3.2 黑马程序员学习路线 3.3 根据地区获取经纬度...

深度学习 bert与Transformer的区别联系

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;和Transformer都是现代自然语言处理&#xff08;NLP&#xff09;中的重要概念&#xff0c;但它们代表不同的层面。理解这两者之间的区别与联系有助于更好地掌握它们在NLP任务中的应用。 …...

unity使用mesh 画图(1)

plane 圆 空心椭圆 椭圆 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DrawMeshManager {static DrawMeshManager instance;public static DrawMeshManager Instance {get {if (instance ! null){retu…...

SpringMVC响应页面及不同类型的数据,

目录 响应页面 响应数据 文本数据 响应POJO对象 ​编辑 响应生命周期 视图解析器 控制器&#xff08;Controller&#xff09;处理完客户端请求后&#xff0c;生成的并返回给客户端的结果就是响应&#xff0c;响应的结果可以是静态页面&#xff0c;数据&#xff0c;HTM…...

地理信息系统(ArcGIS)在水文水资源及水环境中的应用:空间数据管理‌、空间分析功能‌、‌可视化表达‌

随着全球工业化和经济的快速发展&#xff0c;水资源短缺、水污染等问题日益严峻&#xff0c;成为制约可持续发展的重大瓶颈。地理信息系统&#xff08;GIS&#xff09;以其强大的空间数据管理和分析能力&#xff0c;在水文水资源及水环境的研究和管理中展现出独特优势。本文将深…...

电路原理(电容 集成电路NE555)

电容 1.特性&#xff1a;充放电&#xff0c;隔直流&#xff0c;通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加&#xff0c;但是多电容串联就不会&#xff0c;只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…...

C++对象的初始化和对象所占资源的清理-----初始化列表

一、初始化列表 C 提供了 初始化列表&#xff08;initializer list&#xff09; 语法&#xff0c;可以在 构造函数 中用来初始化类的成员变量。它的主要优势是 提高效率&#xff0c;特别是在初始化 const 或 reference 类型的成员时&#xff0c;以及避免额外的赋值操作。 1.…...

零成本搭建Calibre个人数字图书馆支持EPUB MOBI格式远程直读

文章目录 前言1.网络书库软件下载安装2.网络书库服务器设置3.内网穿透工具设置4.公网使用kindle访问内网私人书库 前言 嘿&#xff0c;各位书虫们&#xff01;今天要给大家安利一个超级炫酷的技能——如何在本地Windows电脑上搭建自己的私人云端书库。亚马逊服务停了&#xff…...

Ansible命令行模式常用模块使用案例(二)

在Ansible中&#xff0c;命令行模式&#xff08;Ad-Hoc 模式&#xff09;是一种快速执行任务的方式&#xff0c;适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例&#xff08;第二部分&#xff09;&#xff1a; 1 file模块 功能特性&#xff1a;主要用于…...

12. Pandas :使用pandas读Excel文件的常用方法

一 read_excel 函数 其他参数根据实际需要进行查找。 1.接受一个工作表 在 11 案例用到的 Excel 工作簿中&#xff0c;数据是从第一张工作表的 A1 单元格开始的。但在实际场景中&#xff0c; Excel 文件可能并没有这么规整。所以 panda 提供了一些参数来优化读取过程。 比如 s…...

Pytorch中矩阵乘法使用及案例

六种矩阵乘法 torch中包含许多矩阵乘法&#xff0c;大致可以分为以下几种&#xff1a; *&#xff1a;即a * b 按位相乘&#xff0c;要求a和b的形状必须一致&#xff0c;支持广播操作 torch.matmul()&#xff1a;最广泛的矩阵乘法 &#xff1a;与torch.matmul()效果一样&…...

【MySQL】增删改查进阶

目录 一、数据库约束 约束类型 NULL约束&#xff1a;非空约束 UNIQUE&#xff1a;唯一约束 DEFAULT&#xff1a;默认值约束 PRIMARY KEY&#xff1a;主键约束 FOREIGN KEY&#xff1a;外键约束 二、表的设计 三、新增 四、查询 聚合查询 聚合函数 GROUP BY子句 HA…...

【Linux 指北】常用 Linux 指令汇总

第一章、常用基本指令 # 注意&#xff1a; # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xf…...

父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法

提示&#xff1a;父组件中循环生成多个子组件时&#xff0c;有且只有最后一个子组件的watch对象生效问题及解决办法 文章目录 [TOC](文章目录) 前言一、问题二、解决方法——使用function函数代替箭头函数()>{}总结 前言 ‌‌‌‌‌问题&#xff1a;子组件用that解决watch无…...

stable Diffusion 中的 VAE是什么

在Stable Diffusion中&#xff0c;VAE&#xff08;Variational Autoencoder&#xff0c;变分自编码器&#xff09;是一个关键组件&#xff0c;用于生成高质量的图像。它通过将输入图像编码到潜在空间&#xff08;latent space&#xff09;&#xff0c;并在该空间中进行操作&…...

麒麟v10 ARM64架构系统升级mysql数据库从mysql-5.7.27到mysql-8.4.4图文教程

1、背景与问题说明 因mysql-5.2.27版本存在安全漏洞问题&#xff0c;为保障系统安全&#xff0c;需将处于生产环境的麒麟v10 ARM64架构系统服务器上当前部署的mysql-5.7.27版本升级到mysql-8.4.4&#xff0c;以规避潜在风险&#xff0c;提升系统整体的安全性和稳定性。 1.1 本…...

图论·拓扑排序

拓扑排序 有向无环图的遍历 检查有向图是否连通/有环 核心操作 统计度数&#xff0c;对于度为0的点作为起始点&#xff0c;添加度为0的点作为遍历 如何验证有环&#xff1f;注意不建议直接模拟&#xff0c;如果出现环这起始点的度一定不为0&#xff0c;肯定会少遍历一些点&…...

Uniapp组件 Textarea 字数统计和限制

Uniapp Textarea 字数统计和限制 在 Uniapp 中&#xff0c;可以通过监听 textarea 的 input 事件来实现字数统计功能。以下是一个简单的示例&#xff0c;展示如何在 textarea 的右下角显示输入的字符数。 示例代码 首先&#xff0c;在模板中定义一个 textarea 元素&#xff…...

一文了解JVM的垃圾回收

Java堆内存结构 java堆内存是垃圾回收器管理的主要区域&#xff0c;也被称为GC堆。 为了方便垃圾回收&#xff0c;堆内存被分为新生代、老年代和永久代。 新创建的对象的内存会在新生代中分配&#xff0c;达到一定存活时长后会移入老年代&#xff0c;而永久代存储的是类的元数…...

Vector底层结构和源码分析(JDK1.8)

参考视频&#xff1a;韩顺平Java集合 Vector 类的定义说明&#xff1a; Vector 的底层也是一个对象数组&#xff0c;protected Object[] elementData;Vector 是线程同步的&#xff0c;即线程安全&#xff0c;Vectoe 类的操作方法带有 synchronized 关键字&#xff1a;public sy…...

uni-app+vue3学习随笔

目录相关 static文件 编译器会把static目录中的内容整体复制到最终编译包内&#xff0c; 非 static 目录下的文件&#xff08;vue组件、js、css 等&#xff09;只有被引用时&#xff0c;才会被打包编译。 css、less/scss 等资源不要放在 static 目录下&#xff0c;建议这些…...

JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案

JetBrains&#xff08;全家桶: IDEA、WebStorm、GoLand、PyCharm&#xff09; 2024.3 2025 版免费体验方案 前言 JetBrains IDE 是许多开发者的主力工具&#xff0c;但从 2024.02 版本起&#xff0c;JetBrains 调整了试用政策&#xff0c;新用户不再享有默认的 30 天免费试用…...

移远通信联合德壹发布全球首款搭载端侧大模型的AI具身理疗机器人

在汹涌澎湃的人工智能浪潮中&#xff0c;具身智能正从实验室构想迈向现实应用。移远通信凭借突破性的端侧AI整体解决方案&#xff0c;为AI机器人强势赋能&#xff0c;助力其实现跨行业拓展&#xff0c;从工业制造到服务接待&#xff0c;再到医疗康养&#xff0c;不断改写各行业…...

嵌入式硬件篇---手柄控制控制麦克纳姆轮子

文章目录 前言1. 变量定义2. 摇杆死区设置3. 模式检查4. 摇杆数据处理4.1 右摇杆垂直值&#xff08;psx_buf[7]&#xff09;4.2 右摇杆水平值&#xff08;psx_buf[8]&#xff09;4.3 左摇杆水平值&#xff08;psx_buf[5]&#xff09;4.4 左摇杆垂直值&#xff08;psx_buf[6]&am…...

XML Schema 实例

XML Schema 实例 引言 XML(可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言。XML Schema 是一种用于定义 XML 文档结构的机制,它定义了 XML 文档中允许的数据类型、元素和属性。本文将详细探讨 XML Schema 实例,包括其基本概念、结构、用途以及实例分析。…...

Datax-web部署文档(超详细)

Datax-web部署文档&#xff08;超详细&#xff09; Datax部署 # 参考官方文档 https://github.com/alibaba/DataX/blob/master/userGuid.md# 下载datax已经封装好的文件&#xff0c;不推荐源码自己编译 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.…...

基于javaweb的SSM敬老院养老院管理系统(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践

目录 前言 一、QGIS准备基础数据 1、QGIS 相关插件 2、图层标绘操作 二、PPT中制作 1、调整图片的规格 2、设置旋转 3、添加文字 三、总结 前言 在信息爆炸的时代&#xff0c;数据的可视化呈现变得愈发关键&#xff0c;而专题地图作为传递地理空间信息的有力工具&#…...

DeepSeek-R1 论文阅读总结

1. QA问答&#xff08;我的笔记&#xff09; Q1: DeepSeek如何处理可读性问题&#xff1f; 通过构建冷启动数据&#xff08;数千条长CoT数据&#xff09;微调基础模型&#xff0c;结合多阶段训练流程&#xff08;RL训练、拒绝采样生成SFT数据&#xff09;&#xff0c;并优化输…...

如何选择适合您智能家居解决方案的通信协议?

如何选择适合您智能家居解决方案的通信协议&#xff1f; 在开发智能家居产品时&#xff0c;选择合适的通信协议对于设备的高效运行及其在智能家居系统中的互操作性至关重要。市面上协议众多&#xff0c;了解它们的特性并在做决定前考虑各种因素是非常必要的。以下是一些帮助您…...

蓝桥杯备考:set容器用法(lower_bound)---营业额统计

如图所示&#xff0c;这道题的暴力解法就是枚举每天的营业额&#xff0c;让该营业额和前面的天的营业额依次相减取最小值这样的话我们的时间复杂度就是N平方&#xff0c;我们是很有可能超时的 所以我们选择用set容器的二分查找功能 我们每次遍历到一个数的时候&#xff0c;前…...

vue3 动态添加路由并生成左侧菜单栏

先说下思路&#xff0c;登录后跳转到基础页面&#xff0c; 每访问一个页面时&#xff0c;会进到路由守卫的方法 守卫进行身份验证&#xff0c;登录成功后才能跳转到静态路由外的页面&#xff0c;否则就重定向回login页面 登录后跳转到基础页面&#xff08;因为基础页面包含了左…...

上下文微调(Contextual Fine-Tuning, CFT)提高大型语言模型(LLMs)在特定领域的学习和推理能力

大型语言模型(LLMs)在开放领域任务中表现出色,但在快速演变的专业领域(如医学、金融)中面临挑战: 知识更新难题:传统指令微调(Instruction Fine-Tuning, IFT)依赖显式指令,难以适应动态知识。灾难性遗忘:持续预训练(Continued Pretraining, CPT)可能导致模型遗忘已…...

L2-4 吉利矩阵

输入样例&#xff1a; 7 3输出样例&#xff1a; 666 这道题是暴力纯搜&#xff0c;但是很难想&#xff0c;我这个是看的别人的代码 #include "bits/stdc.h" using namespace std; int x[20][20]; int l, n; int cnt 0; int sumx[5], sumy[5]; void dfs(int x, in…...

⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance

Hamming Distance&#xff08;汉明距离&#xff09;是用于衡量两个等长字符串在相同位置上不同字符的个数的度量。它通常用于比较两个二进制字符串或编码序列的差异。 定义 给定两个长度相同的字符串 A A A 和 B B B&#xff0c;它们的汉明距离 D ( A , B ) D(A,B) D(A,B)…...