opencv(6): 形态学操作(二值化、自适应阈值、开闭、对比度)
如何在图片中识别出一些物体的位置。具体是什么不是形态学的范畴。
处理方法基本是对二进制图像进行处理。
卷积核决定着图像处理后的效果。
图像二值化
将图像的每个像素变成两种值, 如 0, 255。
全局二值化:全局按照某个阈值二值化
局部二值化
threshold(img, thresh, maxVal,type)
import cv2# 读取图像
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)# 进行简单阈值化
# 第一个参数是输入图像
# 第二个参数是用于分类像素值的阈值
# 第三个参数是当像素值高于阈值时要应用的新像素值
# 第四个参数是指定使用的阈值类型,如cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV等
_, thresholded = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY)
可以使用不同的阈值类型,根据应用的要求选择适当的类型。例如,cv2.THRESH_BINARY表示二进制阈值化,cv2.THRESH_BINARY_INV表示反二进制阈值化等。
后面三种不是二值化。
ostu: 类间方差最大
自适应阈值
由于光照不均与以及阴影的存在,只有一个阈值会使得在阴影处的白色被二值化为黑色。
cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
- src: 输入图像,应该是灰度图像。
- maxValue: 分类像素值的最大值,通常为255。
- adaptiveMethod: 指定阈值计算方法,可以是以下两者之一:
- cv2.ADAPTIVE_THRESH_MEAN_C:使用邻域块的平均值作为阈值。
- cv2.ADAPTIVE_THRESH_GAUSSIAN_C:使用邻域块的加权平均值(高斯窗口)作为阈值。
- thresholdType: 指定阈值类型,应该是以下两者之一:
- cv2.THRESH_BINARY:二进制阈值。
- cv2.THRESH_BINARY_INV:反二进制阈值。
- blockSize: 用于计算阈值的邻域块大小,必须是奇数。
- C: 从计算的平均值或加权平均值中减去的常数。
- dst (可选): 输出图像,可以与输入图像相同。如果未提供,函数将创建一个新的图像。
# 读取图像
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)# 自适应阈值二值化
# 第一个参数是输入图像
# 第二个参数是用于分类像素值的最大值
# 第三个参数是指定使用的阈值类型,如cv2.ADAPTIVE_THRESH_MEAN_C或cv2.ADAPTIVE_THRESH_GAUSSIAN_C
# 第四个参数是指定阈值计算方法的区域大小,例如11表示计算每个像素周围的11x11区域
# 第五个参数是从计算的平均值或加权平均值中减去的常数
thresholded = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2
)
cv2.adaptiveThreshold函数使用局部均值作为阈值计算方法,然后将每个像素的阈值与其周围11x11区域的均值进行比较。你还可以尝试使用cv2.ADAPTIVE_THRESH_GAUSSIAN_C作为阈值计算方法,它使用局部区域的加权平均值。
获取卷积核
cv2.getStructuringElement(shape, ksize[, anchor])
参数说明:
- shape: 结构元素的形状,可以是 cv2.MORPH_RECT(矩形)、cv2.MORPH_ELLIPSE(椭圆)、cv2.MORPH_CROSS(十字形)等。
- ksize: 结构元素的大小,通常是一个 (width, height) 的元组。
- anchor(可选): 结构元素的锚点位置,默认为结构元素的中心。
import cv2
import numpy as np# 创建一个 3x3 的矩形结构元素
kernel_rect = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
print("Rectangular Kernel:")
print(kernel_rect)# 创建一个 3x3 的椭圆结构元素
kernel_ellipse = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
print("\nElliptical Kernel:")
print(kernel_ellipse)# 创建一个 3x3 的十字形结构元素
kernel_cross = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))
print("\nCross-shaped Kernel:")
print(kernel_cross)
腐蚀和膨胀
腐蚀:
用结构元素扫描图像,当结构元素完全包含在目标区域内时,保留中心点。
效果:消除细小物体、分离粘连目标、收缩物体边界。
膨胀:
用同一结构元素扫描腐蚀后的图像,当结构元素与目标区域有交集时,保留中心点。
效果:恢复被腐蚀物体的主要形状,但被完全消除的小物体无法恢复。
腐蚀 Erosion
将一个区域变小
卷积核都是全1 的,
在腐蚀操作中,结构元素(也称为内核)是一个小的图像,它定义了腐蚀的形状。在每一步腐蚀操作中,结构元素会在图像上滑动,并与图像的局部区域进行覆盖。在每个覆盖的位置,只有原图的像素全都包含在核中,该核中心点值才保留(个人理解?)。这个过程会导致图像中的边界逐渐变窄,因为图像中较亮的区域将被周围较暗的区域腐蚀。这会导致边界处的像素被腐蚀,对象会变小。


cv2.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
- src: 输入图像,通常是二进制图像。
- kernel: 结构元素,用于定义腐蚀操作的形状。
- dst (可选): 输出图像,可以与输入图像相同。如果未提供,函数将创建一个新的图像。
- anchor (可选): 结构元素的锚点。默认值 (-1, -1) 表示锚点位于结构元素的中心。
- iterations (可选): 腐蚀操作的迭代次数,默认为 1。
- borderType (可选): 边界模式,表示当边界被腐蚀时如何处理。默认是 cv2.BORDER_CONSTANT。
- borderValue (可选): 当 borderType 为 cv2.BORDER_CONSTANT 时的边界值,默认为 0。
# 读取图像
img = cv2.imread('input_image.png', cv2.IMREAD_GRAYSCALE)# 创建结构元素,这里使用一个 3x3 的矩形结构元素
kernel = np.ones((3, 3), np.uint8)# 进行腐蚀操作
result = cv2.erode(img, kernel, iterations=1)
膨胀
将一个区域变大
开闭运算
开运算和闭运算是形态学处理中的两个重要操作,通常用于图像处理中的去噪、分割等任务。
开运算是先腐蚀后膨胀的过程。腐蚀操作可以消除小的噪点或细小的结构,而膨胀则可以恢复保留下来物体的形状,但被腐蚀掉的区域不会恢复。因此,开运算适合去除图像中的小物体或者平滑物体的边界,同时保持主要结构不变。例如,如果有一张包含许多小点的图像,开运算可以有效去除这些小点,而较大的物体则不受影响。
开运算
先做腐蚀再做膨胀。
最后的动作是放大的,就是开运算。
闭运算
先做膨胀再做腐蚀。
最后的动作是缩小的,就是闭运算。
闭运算适合的场景:填充小孔、连接邻近物体、平滑边界、处理断裂区域。
dst = cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]
)
操作流程:
膨胀:扩大亮区,填充孔洞
腐蚀:收缩回原始尺寸,保持主要形状
顶帽 & 黑帽
import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)# 定义结构元素
kernel = np.ones((5, 5), np.uint8)# 进行顶帽操作
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)# 进行黑帽操作
blackhat = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)# 显示原始图像、顶帽结果和黑帽结果
plt.figure(figsize=(15, 5))plt.subplot(131)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')plt.subplot(132)
plt.imshow(tophat, cmap='gray')
plt.title('Top Hat')
plt.axis('off')plt.subplot(133)
plt.imshow(blackhat, cmap='gray')
plt.title('Black Hat')
plt.axis('off')plt.show()
opencv 改变图片对比度
可以使用 cv2.convertScaleAbs 函数来改变图片的对比度。
可以按照一定的比例对图片的每个像素值进行缩放,同时还可以添加一个偏置,从而改变图片的对比度。
相关文章:
opencv(6): 形态学操作(二值化、自适应阈值、开闭、对比度)
如何在图片中识别出一些物体的位置。具体是什么不是形态学的范畴。 处理方法基本是对二进制图像进行处理。 卷积核决定着图像处理后的效果。 图像二值化 将图像的每个像素变成两种值, 如 0, 255。 全局二值化:全局按照某个阈值二值化 局部…...
P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值--完全 “二叉树” 不一定是 “满二叉树”
P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值 题目分析代码 题目 分析 我吧完全二叉树记成满二叉树了^^ 又卡我几分钟 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <qu…...
Python驱动的餐饮企业智能数据分析:从数据清洗到可视化决策全流程实战
文章目录 Python驱动的餐饮企业智能数据分析:从数据清洗到可视化决策全流程实战引言一、案例背景1.1 需求分析1.2 数据准备1.2.1 模拟数据生成代码二、数据处理全流程2.1 数据清洗2.1.1 缺失值处理2.1.2 异常值检测2.2 核心指标计算2.2.1 营业额分析2.2.2 门店表现评估2.2.3 菜…...
深入理解IP子网掩码子网划分{作用} 以及 不同网段之间的ping的原理 以及子网掩码的区域划分
目录 子网掩码详解 子网掩码定义 子网掩码进一步解释 子网掩码的作用 计算总结表 子网掩码计算 子网掩码对应IP数量计算 判断IP是否在同一网段 1. 计算步骤 2. 示例 3. 关键点 总结 不同网段通信原理与Ping流程 1. 同网段通信 2. 跨网段通信 网段计算示例 3. P…...
Rust 中的内部可变性与 `RefCell<T>`
一、为什么需要内部可变性? 通常,Rust 编译器通过静态分析确保: 同一时刻只能存在一个可变引用,或任意多个不可变引用;引用始终保持有效。 这种严格的借用规则使得许多内存错误在编译阶段就能被捕获,但也…...
Android Audio实战——音频相关基础概念(附)
Android Audio 开发其实就是媒体源数字化的过程,通过将声波波形信号通过 ADC 转换成计算机支持的二进制的过程叫做音频采样 (Audio Sampling)。采样 (Sampling) 的核心是把连续的模拟信号转换成离散的数字信号。 一、声音的属性 1、响度 (Loudness) 响度是指人类可以感知到的…...
【Java项目】基于Spring Boot的教师人事档案管理系统
【Java项目】基于Spring Boot的教师人事档案管理系统 技术简介:采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介:此系统的功能分为教师和管理员模块: 1、教师后台功能模块包括:首页、个人中心、个人档案管理、奖惩信…...
MySQL 中表和视图的关系
MySQL 中表和视图的关系 在 MySQL 中,表(Table) 是数据库中的基本存储结构,实际存储数据。而 视图(View) 是基于表或其他视图的虚拟表,它不存储数据,而是存储一条 SQL 查询的定义&a…...
BigDecimal线上异常解决方案:避免科学计数法输出的坑
文章目录 问题背景为什么BigDecimal会输出科学计数法?线上异常场景场景1:数据传递异常场景2:日志记录异常场景3:数据存储异常 解决方案1. 使用toPlainString()方法2. 设置格式化输出3. 自定义工具类 代码示例总结 在Java开发中&am…...
网络运维学习笔记(DeepSeek优化版)004网工初级(HCIA-Datacom与CCNA-EI)Console管理台使用、登录认证、破解恢复密码
文章目录 Console管理台使用、登录认证、破解恢复密码一、Console管理台使用和登录认证1.1 思科设备配置1.1.1 基本配置流程1.1.2 验证配置 1.2 华为设备配置1.2.1 本地密码认证1.2.2 AAA认证配置 二、远程管理协议Telnet和SSH配置2.1 思科Telnet基本配置2.2 华为Telnet基本配置…...
vmware系统磁盘扩容
扩展磁盘 关闭系统 编辑虚拟机设置,点击磁盘进行扩展 若无法点击检查是否有快照,若报错“在部分链上无法执行所调用的函数,请打开父虚拟磁盘”可查看解决方案 内部挂载 扩展分区 fdisk /dev/sda输入p,打印当前分区表删除/dev/…...
数据结构(陈越,何钦铭) 第四讲 树(中)
4.1 二叉搜索树 4.1.1 二叉搜索树及查找 Position Find(ElementTyoe X,BinTree BST){if(!BST){return NULL;}if(X>BST->Data){return Find(X,BST->Right)}else if(X<BST->Data){return Find(X,BST->Left)}else{return BST;} } Position IterFind(ElementTyp…...
OpenGL进阶系列19 - OpenGL SuperBible - basicfbo 例子学习
一:概述 在超级宝典之前的例子中,程序执行的所有渲染操作都是针对一个窗口,或者可能是计算机的主显示屏。片元着色器(fragment shader)的输出进入后台缓冲区(back buffer),而这个缓冲区通常由操作系统或窗口系统管理,并最终显示给用户。 当我们为渲染上下文选择格式时…...
猿大师播放器:交通水利、公安消防Web端Vue网页播放20路RTSP H.265 1080P监控视频流
随着互联网技术的飞速发展,视频监控已成为各行各业不可或缺的一部分。无论是交通物流、公安消防,还是水利农业、园区校园,视频监控都扮演着至关重要的角色。然而,传统的视频监控解决方案往往依赖于特定的客户端软件,这…...
文件下载技术的终极选择:`<a>` 标签 vs File Saver.js
文件下载技术的终极选择:<a> 标签 vs File Saver.js 在 Web 开发中,文件下载看似简单,实则暗藏玄机。工作种常纠结于 <a> 标签的原生下载和 File Saver.js 等插件的灵活控制之间。本文将从原理、优缺点、场景对比到实战技巧&…...
IDE(集成开发环境)
IDE(集成开发环境) 1. IDE 的定义 全称:Integrated Development Environment(集成开发环境)。中文:集成开发环境。作用:为程序开发提供全面的开发环境,集成了多种工具和服务&#x…...
数据安全_笔记系列02:国密算法(商用密码算法)详解
数据安全_笔记系列02:国密算法(商用密码算法)详解 国密算法是中国国家密码管理局(现国家密码管理局)制定的一系列自主可控的密码算法标准,旨在保障国内信息安全,满足合规要求。以下从 算法类型、技术细节、…...
全面汇总windows进程通信(三)
在Windows操作系统下,实现进程间通信(IPC, Inter-Process Communication)有几种常见的方法,包括使用管道(Pipe)、共享内存(Shared Memory)、消息队列(Message Queue)、命名管道(Named Pipe)、套接字(Socket)等。本文介绍如下几种: RPC(远程过程调用,Remote Pr…...
Python爬虫-破解字体加密技术
前言 本文是该专栏的第77篇,后面会持续分享python爬虫干货知识,记得关注。 字体加密是一种常见的反爬虫技术,通过自定义字体文件和字符映射来保护网页内容,防止爬虫直接获取文本信息。 而本文,笔者将针对“如何解决目标平台的字体加密技术,并获取目标数据”,进行详细介…...
Pytorch实现论文:基于多尺度融合生成对抗网络的水下图像增强
简介 简介:提出了一种新型的水下图像增强算法,基于多尺度融合生成对抗网络,名为UMSGAN,以解决低对比度和颜色失真的问题。首先经过亮度的处理,将处理后的图像输入设计的MFFEM模块和RM模块生成图像。该算法旨在适应各种水下场景,提供颜色校正和细节增强。 论文题目:Und…...
【Python量化金融实战】-第1章:Python量化金融概述:1.1量化金融的定义与发展历程
本小节学习建议:掌握Python编程、统计学(时间序列分析)、金融学基础(资产定价理论)三者结合,是进入量化领域的核心路径。 👉 点击关注不迷路 👉 点击关注不迷路 文章目录 1.1 量化金…...
大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(3)
Paimon的下载及安装,并且了解了主键表的引擎以及changelog-producer的含义参考: 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join,集成mysql cdc等参考: 大数据组件(四)快速入门实时数据…...
【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》
论文链接 1. 背景与动机 语言空间与推理的矛盾 目前大多数大语言模型(LLMs)在解决复杂问题时采用链式思维(Chain-of-Thought, CoT)方法,即利用自然语言逐步推导出答案。然而,论文指出: 自然语言…...
Linux-CentOS 7安装
Centos 7镜像:https://pan.baidu.com/s/1fkQHYT64RMFRGLZy1xnSWw 提取码: q2w2 VMware Workstation:https://pan.baidu.com/s/1JnRcDBIIOWGf6FnGY_0LgA 提取码: w2e2 1、打开vmware workstation 2、选择主界面的"创建新的虚拟机"或者点击左上…...
【Web RCE 漏洞常见类型】
Web RCE 漏洞常见类型 1. 注入类漏洞2. 反序列化漏洞3. 文件处理漏洞4. 模板引擎漏洞5. 服务端请求伪造(SSRF)6. 框架/中间件漏洞7. 第三方组件漏洞8. 配置不当与协议滥用9. 其他边缘场景防御建议 以下是可以导致远程代码执行(RCE)…...
【蓝桥杯单片机】第十三届省赛第二场
一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 2.编写LED函数(led.c) void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器 关闭锁存…...
【够用就好006】-PC桌面管理ECS服务器的实操步骤
背景介绍解决思路拓展知识 背景介绍 #够用就好#知其然知其所以然#aigc创意人左边 我计划搭建个人网站,计划格式化我的ECS服务器,但是里面有我之前的实践项目,我舍不得删除,我想要保存到本地。 通常我都是在vscode中用remotes ssh…...
Spring Boot 2/3.x 中 MultipartFile 接收问题深度解析与实战解决方案
文章目录 引言:文件上传的暗礁与应对一、核心机制解析1.1 多部分请求处理流程1.2 关键配置参数演进 二、典型问题排查与修复2.1 文件接收为null问题2.2 大文件上传内存溢出 三、版本差异陷阱3.1 Jakarta Servlet API迁移影响3.2 默认配置变更对比 四、高级问题解决方…...
MySQL的三种并发问题和四种隔离级别
阅读之前,请心里默念,脏读、不可重复读、幻读是三种常见的并发问题,隔离级别是应对并发问题的四种隔离级别,隔离级别和并发问题是两个东西,不要混淆。 在数据库事务中,脏读(Dirty Readÿ…...
【复习】Redis
数据结构 Redis常见的数据结构 String:缓存对象Hash:缓存对象、购物车List:消息队列Set:点赞、共同关注ZSet:排序 Zset底层? Zset底层的数据结构是由压缩链表或跳表实现的 如果有序集合的元素 < 12…...
【Docker】如何在Linux、Windows、MacOS中安装Docker
Linux安装Docker 在终端中执行一键安装脚本命令安装dockersudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker镜像源 在终端执行 一行命令,编辑配置文件sudo tee /etc/docke…...
Linux System V - 消息队列与责任链模式
概念 消息队列是一种以消息为单位的进程间通信机制,允许一个或多个进程向队列中发送消息,同时允许一个或多个进程从队列中接收消息。消息队列由内核维护,具有以下特点: 异步通信:发送方和接收方不需要同时运行&#x…...
k2路由器登录校园网
教程1刷入Breed,并手动刷入Padavan固件:斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址: 我用的是: Padavan 登录的网址是 192.168.123.1 Padavan配置教程: 先用网线连上校园网&#…...
Docker基础实践与应用举例
Docker 是一个轻量级容器化平台,通过将应用及其依赖打包到容器中,实现快速部署和环境一致性。以下是 Docker 的实践与应用场景举例,结合具体操作步骤: 一、基础实践 1. 快速启动一个容器 # 运行一个Nginx容器,映射宿…...
EndNote与Word关联:科研写作的高效助力
在科研领域,文献管理与论文写作是紧密相连的重要环节。EndNote作为一款强大的文献管理工具,与Word实现有效关联后,能极大地提升科研写作效率。本文将详细介绍EndNote与Word关联的方法、关联后的优势、常见问题及解决办法,助力科研…...
用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解
DeepSeek R1 的完整训练流程核心在于,在其基础模型 DeepSeek V3 之上,运用了多种强化学习策略。 本文将从一个可本地运行的基础模型起步,并参照其技术报告,完全从零开始构建 DeepSeek R1,理论结合实践,逐步…...
SOME/IP-SD -- 协议英文原文讲解2
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.2 S…...
Matlab——图像保存导出成好看的.pdf格式文件
点击图像的右上角,点击第一个保存按钮键。...
Mybatis常用动态 SQL 相关标签
1. <if> 用于条件判断,当满足条件时执行对应的 SQL 片段。 示例: <select id"findUser" resultType"User">SELECT * FROM usersWHERE 11<if test"name ! null and name ! ">AND name #{name}</if><if…...
计算机网络与通讯知识总结
计算机网络与通讯知识总结 基础知识总结 1)FTP:文件传输 SSH:远程登录 HTTP:网址访问 2)交换机 定义:一种基于MAC地址实现局域网(LAN)内数据高速转发的网络设备,可为接入设备提供独享通信通道。 - 核心功能: 1.数据链路层(OSI第二层)工作,通过MAC地址…...
Redis 通用命令
Redis 通用命令 文章目录 Redis 通用命令 1. 启动redis 1.1 前台启动1.2 后台启动1.3 开机自启 2.Redis命令行客户端3. 常见命令 3.1 help3.2 KEYS3.3 DEL3.4 EXISTS3.5 EXPIRE&TTL 1. 启动redis 1.1 前台启动 在安装好redis后,我们可以在任意目录输入以…...
【idea问题排查技巧】
以下是针对 IDEA 中 日志打标(动态标记) 和 全链路追踪 功能的分步详解,结合具体场景和操作截图说明,帮助快速掌握实战技巧。 一、动态日志打标:不修改代码输出关键信息 1. 断点日志打印(非侵入式打标) 场景:在调试时,需要临时查看某个变量的值,但不想修改代码添加…...
VSCode自定义快捷键和添加自定义快捷键按键到状态栏
VSCode自定义快捷键和添加自定义快捷键按键到状态栏 📄在VSCode中想实现快捷键方式执行与某些指令操作进行绑定,可以通过配置组合式的键盘按键映射来实现,另外一种方式就是将执行某些特定的指令嵌入在面板菜单上,在想要执行的时候…...
【Redis 原理】通信协议 内存回收
文章目录 通信协议--RESP内存回收内存过期策略惰性删除周期删除 内存淘汰策略 通信协议–RESP Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(se…...
AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据
问题: 通过 Redshift Spectrum 功能可以读取 S3 中的文件,当读取 Parquet 文件时,如果列格式设置为 timestamp, 通过 psql 客户端读取会出现以下错误: testdb# select * from myspectrum_schema_0219.test_ns; ERROR…...
H5--开发适配
在 H5 开发中,适配不同设备和屏幕尺寸至关重要,它能确保页面在各种环境下都有良好的显示效果和用户体验。以下介绍几种常见的 H5 开发适配方案: 视口(Viewport)设置 视口单位是相对于浏览器视口的尺寸进行度量的单位&…...
llama-factory部署微调方法(wsl-Ubuntu Windows)
llama-factory项目GitHub地址:GitHub - hiyouga/LLaMA-Factory: Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) wsl-Ubuntu: 1.获取项目 git clone https://github.com/hiyouga/LLaMA-Factory.gitcd LLaMA-Factory/ 2.安装环境…...
【Unity】鱼群效果模拟
鱼群效果模拟 文章目录 鱼群效果模拟Boid算法实现方式version1_CPUversion2_GPUversion3_Multilaterationversion4_Bitonic_Sorting (GPU友好)version5_Skinning (TODO) 细节项优化项参考链接 Boid算法 Boid算法是一种模拟群体行…...
C++ 编程语言简介
C 是一种通用编程语言,它是作为 C 语言的增强而开发的,以包含面向对象的范例。它是一种命令式和编译语言。 C 是一种高级的通用编程语言,专为系统和应用程序编程而设计。它由贝尔实验室的 Bjarne Stroustrup 于 1983 年开发,作为…...
Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器
目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…...