基于MLA的人类语音情感分类
《DeepSeek大模型高性能核心技术与多模态融合开发(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书
随着信息技术的不断发展,如何让机器识别人类情绪,这个问题受到了学术界和工业界的广泛关注。目前,情绪识别有两种方式,一种是检测生理信号,如呼吸、心率和体温等;另一种是检测情感行为,如人脸微表情识别、语音情绪识别和姿态识别。语音情绪识别(Speech Emotion Recognition,SER)是一种生物特征属性的识别方法,可通过一段语音的声学特征(与语音内容和语种无关)来识别说话人的情绪状态。语音情绪示例如图6-3所示。
图6-3 语音情绪示例
在上一节中,我们完成了基于文本的评论情感分类模型,并完成了一个具有示范意义的模型训练。本节将继续完成一项语音实战任务,即基于MLA的人类语音情感分类。
6.2.1 情绪数据的获取与标签的说明
首先是语音情绪数据集的下载,这里我们使用瑞尔森情感语音和歌曲视听数据库RAVDESS。RAVDESS语音数据集部分包含1440个文件:每个演员60次试验×24名演员=1440。RAVDESS包含24名专业演员(12名女性,12名男性),用中性的北美口音说出两个词汇匹配的陈述。言语情绪包括平静、快乐、悲伤、愤怒、恐惧、惊讶和厌恶的表情。每种表情都在两种情绪强度(正常、强烈)和一种额外的中性表情下产生。
读者可以自行下载对应的数据集,这里我们使用Audio_Speech_Actors_01-24.zip这个子数据集做情感分类。下载后的数据集结构如图6-4所示。
图6-4 左图是Audio文件夹,右图是单个文件夹数据
下面需要讲解一下情绪文件的标签问题。这个数据包含中性、平静、快乐、悲伤、愤怒、恐惧、厌恶、惊讶八种情感。请读者注意一下,本项目只使用里面的Audio_Speech_Actors_01-24.zip数据集,说话的语句只有Kids are talking by the door和Dogs are sitting by the door。
在这个数据集中,每个音频文件都拥有一个独一无二的文件名,例如图6-4所示的“03-01-01-01-01-01-01.wav”。这些文件名由七部分数字标识符构成,并非随意命名。这些数字标识符实际上赋予了文件名特定的标签意义,通过文件名就能够了解音频文件的某些属性或特征:
通过对比,03-01-02-01-01-01-01.wav这个文件对应的信息是:
另外需要注意,在这个数据集中,音频的采样率为22050,这一点可以设定或者采用在上一章介绍的librosa进行读取。
6.2.2 情绪数据集的读取
下面是需要对情绪数据集的读取,在读取数据之前需要注意,数据集中每个文件都存放在不同的文件夹中,而每个文件夹都包含若干个不同的情绪文件。因此,在读取数据时首先需要实现文件夹的读取函数:
import numpy as np
import torch
import os
import librosa as lb
import soundfile# 这个是列出所有目录下文件夹的函数
def list_folders(path):"""列出指定路径下的所有文件夹名"""folders = []for root, dirs, files in os.walk(path):for dir in dirs:folders.append(os.path.join(root, dir))return foldersdef list_files(path):files = []for item in os.listdir(path):file = os.path.join(path, item)if os.path.isfile(file):files.append(file)return files
由于这里读取的是音频数据,我们在上一章对音频数据降维的时候完成了基于librosa库包的音频读取和转化,可以把相应的代码用在这个示例中,代码如下所示。
#注意采样率的变更
def audio_features(wav_file_path, mfcc = True, chroma = False, mel = False,sample_rate = 22050):audio,sample_rate = lb.load(wav_file_path,sr=sample_rate)if len(audio.shape) != 1:return Noneresult = np.array([])if mfcc:mfccs = np.mean(lb.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40).T, axis=0)result = np.hstack((result, mfccs))if chroma:stft = np.abs(lb.stft(audio))chroma = np.mean(lb.feature.chroma_stft(S=stft, sr=sample_rate).T, axis=0)result = np.hstack((result, chroma))if mel:mel = np.mean(lb.feature.melspectrogram(y=audio, sr=sample_rate, n_mels=40, fmin=0, fmax=sample_rate//2).T, axis=0)result = np.hstack((result, mel))# print("file_title: {}, result.shape: {}".format(file_title, result.shape))return result
这里需要注意,由于读取的是不同数据集,而采样率会随着数据集的不同而变化,因此这里的采样率为22050。
下面展示了完整的数据读取代码。为了便于理解,我们对每种情绪进行了文字定义,并将这些定义与相应的情绪序号进行了关联。需要注意,在前面的讲解中,情绪序号是排在文件名中第三个位置的数据。因此,我们可以通过对文件名进行文本分割,提取出情绪序号,并根据序号与情绪的对应关系,读取并理解相应情绪的标签,代码如下:
ravdess_label_dict = {"01": "neutral", "02": "calm", "03": "happy", "04": "sad", "05": "angry", "06": "fear", "07": "disgust", "08": "surprise"}folders = list_folders("./dataset")
label_dataset = []
train_dataset = []
for folder in folders:files = list_files(folder)for _file in files:label = _file.split("\\")[-1].replace(".wav","").split("-")[2]ravdess_label = ravdess_label_dict[label]label_num = int(label) - 1 #这里减1是由于初始位置是1,而一般列表的初始位置是0result = audio_features(_file)train_dataset.append(result)label_dataset.append(label_num)train_dataset = torch.tensor(train_dataset,dtype=torch.float)
label_dataset = torch.tensor(label_dataset,dtype=torch.long)print(train_dataset.shape)
print(label_dataset.shape)
最终的打印结果是将训练数据和label数据转化为torch的向量,如下所示。
torch.Size([1440,40])
torch.Size([1440])
这里我们仅仅使用了MFCC的特征作为音频特征,对于其他特征,读者可以自行尝试。特别需要注意,这个示例中MFCC的维度是40,这与后续模型的输入维度相同;如果修改了输入特征长度后,后续的模型维度也要修改。
6.2.3 语音情感分类模型的设计和训练
接下来,我们需要完成情感分类模型的设计与训练。首先是模型部分,根据我们在上一节获取到的输入数据与标签信息,完成模型的设计,代码如下所示。
import torch
import torch.nn as nn
import torch.optim as optimfrom moudle import attention_moudle,feedforward_layer
class EncoderBlock(torch.nn.Module):def __init__(self,d_model = 128,attention_head_num = 4,hidden_dropout = 0.1):super().__init__()self.hidden_dropout = hidden_dropoutassert d_model%attention_head_num == 0,print("d_model % n_head must be Zero")self.d_model = d_modelself.attention_head_num = attention_head_numself.per_head_num = d_model//attention_head_numself.input_layernorm = torch.nn.RMSNorm(d_model)self.mha = attention_moudle.MultiHeadAttention_MLA(d_model,attention_head_num)self.post_attention_layernorm = torch.nn.RMSNorm(d_model)self.mlp = feedforward_layer.Swiglu(hidden_size=d_model)def forward(self,x, past_length = 0):residual = xembedding = self.input_layernorm(x)embedding = self.mha(embedding,past_length=past_length)embedding = torch.nn.functional.dropout(embedding,p = self.hidden_dropout)layernorm_output = self.post_attention_layernorm(embedding + residual)mlp_output = self.mlp(layernorm_output)output = torch.nn.functional.dropout(mlp_output, p=self.hidden_dropout)output = residual + outputreturn output# 定义模型
class DNN(torch.nn.Module):def __init__(self, input_size = 40, hidden_size = 128, output_size = 8):super(DNN, self).__init__()self.hidden = torch.nn.Linear(input_size, hidden_size)self.encoder_block = EncoderBlock(d_model = hidden_size, attention_head_num = 4)self.relu = torch.nn.ReLU()self.output = torch.nn.Linear(hidden_size, output_size)def forward(self, x):x = torch.unsqueeze(x, 1)x = self.hidden(x)x = self.encoder_block(x, past_length=0)x = torch.nn.Flatten()(x)x = self.relu(x)x = self.output(x)return x
上面这段代码定义了一个深度神经网络(DNN)模型,它包含一个线性层、一个编码块(EncoderBlock)、一个ReLU激活函数层和一个输出层。编码块内部使用了多头注意力机制(MultiHeadAttention_MLA)和前馈网络(Swiglu),并在注意力和前馈网络后应用了残差连接和层归一化(RMSNorm)。模型的前向传播首先将输入数据通过隐藏层,然后通过编码块,接着应用ReLU激活函数,最后通过输出层得到预测结果。请读者运行代码验证结果。
本文节选自《DeepSeek大模型高性能核心技术与多模态融合开发》,获出版社和作者授权发布。
相关文章:
基于MLA的人类语音情感分类
《DeepSeek大模型高性能核心技术与多模态融合开发(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书 随着信息技术的不断发展,如何让机器识别人类情绪,这个问题受到了学术界和工业界的广泛关注。目前,情绪识…...
Codeforces Round 1012 (Div. 2)
AB略 C 没看懂题意,翻译的问题。t0代表这个人必须找一个没有人的桌子且座位离他最近,t1代表这个人只要找一个空座位就可以了。一个桌子四个座位,t0肯定会坐左下角的那个。首先建立两个小根堆q1代表左下角的座位,q2代表一个桌子的…...
FPGA时钟约束
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Create_clock 前言 时钟周期约束,就是对时钟进行约束。 一、Create_clock create_clock -name <name> -period <period> -waveform …...
二分查找------练习3
1. 题目 2. 思路和题解 这道题看到这个复杂度,就想到应该是使用二分查找进行求解。为了使二分查找的次数尽可能的少,我们需要对较短的数组进行查找,假设就在nums1上进行操作,因此在开始时,要对两个数组的长度进行一个…...
拆解美团2024年报,业务协同、生态共赢、科技创新
从早期的千团大战开始,到后来外卖和社区团购们的激烈角逐,再到现在即时零售战场的群雄争霸,本地生活的硝烟从来都没有真正消散过。 作为本地生活服务领域的“领头羊”——美团,也一直都是其他平台们的挑战目标,几乎所…...
EMS小车技术特点与优势:高效灵活的自动化输送解决方案
北成新控伺服技术丨EMS小车调试视频 EMS小车是一种基于单轨运行的电动输送系统,通过电力驱动实现物料的高效搬运和输送,具有高效灵活、节能环保、多功能集成、行业适配性强等特性,广泛应用于汽车制造、工程机械、家电生产、仓储物流等行业自动…...
GESP2025年3月认证解析
GESP一级 一、单选题 答案:D 解析:DeepSeek 是字节跳动公司开发的人工智能,它具备生成文本的能力,所以可以根据《哪吒 2》的场景生成剧情脚本。A 选项中《哪吒 2》是贺岁片,并非新型操作系统;B 选项 Deep…...
尝试在软考62天前开始成为软件设计师-信息系统安全
安全属性 保密性:最小授权原则(能干活的最小权限)、防暴露(隐藏)、信息加密、物理保密完整性(防篡改):安全协议、校验码、密码校验、数字签名、公证 可用性:综合保障( IP过滤、业务流控制、路由选择控制、审计跟踪)不可抵赖性:数字签名 对称加密 DES :替换移位 3重DESAESR…...
Dify - 架构、部署、扩展与二次开发指南
本文详细解析 Dify 的架构、部署流程、高可用中间件的独立部署方法,以及二次开发流程,帮助开发者更高效地管理和扩展 Dify。 1. 本地DEMO部署 安装Docker,执行下面脚本,可能需要配置镜像。 git clone https://github.com/langge…...
用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)
一、传统爬虫的痛点分析 原代码使用requests re的方案存在以下局限性: 动态内容缺失:无法获取JavaScript渲染后的页面内容 维护成本高:网页结构变化需频繁调整正则表达式 反爬易触发:简单请求头伪造容易被识别 资源消耗大&am…...
详细Linux中级知识(不断完善)
Nginx服务配置 基于主机名配置 映射IP和主机名 [rootlocalhost ~]# vim /etc/hosts 192.168.72.135 www.chengke.com chengke[rootlocalhost ~]# echo "192.168.72.135 www.xx.com" >> /etc/hosts以上是两种方法,前面是你的IP地址,后…...
Softmax温度调节与注意力缩放:深度神经网络中的平滑艺术
Softmax温度调节与注意力缩放:深度神经网络中的平滑艺术 在深度学习的精密机械中,有些细微的调整机制往往被视为理所当然,却实际上蕴含着深刻的数学洞察和巧妙的工程智慧。今天,我们将探讨两个看似独立却本质相通的机制ÿ…...
python打包辅助工具
python打包辅助工具 PyInstaller 是一个非常流行的 Python 应用程序打包工具,它可以将 Python 脚本及其依赖项打包成独立的可执行文件,方便在没有 Python 环境的机器上运行。关于PyInstaller,可参见:https://blog.csdn.net/cnds1…...
jangow靶机攻略
配置网卡 VMware需要配置,不配置扫不到ip,VirtualBox正常打开ip会直接显示出来 网卡配置都改成NAT 打开虚拟机,第一个框选第二行,回车 选第二个,按e键 进入下一个框后,将ro 后面的修改为 rw signin init/bin/bash 按…...
【大模型LLM第十四篇】Agent学习之anthropic-quickstarts Agent
前言 对于anthropic api的快速使用,在github上有几个example Customer Support Agent:由 Claude 提供支持的客户支持代理。该项目演示了如何利用 Claude 的自然语言理解和生成功能来创建可访问知识库的 AI 辅助客户支持系统。Financial Data Analyst &…...
MonIo部署
1、命令行安装 访问monio官网下载应用程序 # wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250228095516.0.0-1.x86_64.rpm -O minio.rpm # sudo dnf install minio.rpm # mkdir ~/minio # minio server ~/minio --console-address :90012、dock…...
深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念
首先详细介绍一下 RS485 和 Modbus 这两个在工业自动化和数据通讯领域中非常重要的概念。 RS485 1. 定义与特点 RS485 标准:RS485 是一种串行通信标准,也称为TIA-485标准,主要用于数据传输。它规定了物理层的电气特性,与数据格式…...
Spring Boot深度解析:从核心原理到最佳实践
一、Spring Boot概述 Spring Boot作为Spring生态中的"游戏规则改变者",自2014年发布以来彻底改变了Java企业级应用的开发方式。它通过四大核心特性显著提升了开发效率: 自动配置:基于类路径和已有Bean的智能默认配置起步依赖:简化Maven/Gradle依赖管理的Starter…...
MapReduce过程中reduce task的数量是如何确定的?
在Hadoop MapReduce及Hive中,numReduceTasks(Reduce任务数量)的确定由用户显式设置、框架自动估算、作业特性约束三方面共同决定。以下是详细解析及示例: 1. 用户显式设置 用户可以通过代码或配置参数直接指定Reduce任务数&#…...
【euclid】21 3D包围盒模块(box3d.rs)
box3d.rs文件定义了一个三维轴对齐的矩形框(Box3D),使用最小和最大坐标来表示。矩形框在坐标类型(T)和单位(U)上是泛型的。代码提供了多种方法来操作和查询矩形框,包括求交集、并集、…...
用selenium+ChromeDriver豆瓣电影 肖申克的救赎 短评爬取(pycharm 爬虫)
一、豆瓣电影 肖申克的救赎 短评url=https://movie.douban.com/subject/1292052/comments 二、基本知识点讲解 1. Selenium 的基本使用 Selenium 是一个用于自动化浏览器操作的库,常用于网页测试和爬虫。代码中使用了以下 Selenium 的核心功能: webdriver.Chrome: 启动 Chr…...
mysql入门操作
目录 一,MySQL简述 1,什么是MySQL 2,什么是SQL 3,SQL的分类 二,数据库的数据存储类型 1,数值类型 2,字符串类型 3,时间和日期类型 三,数据库的基本操作 1&…...
机械臂【逆运动学】
回顾正运动学fk: IK: 几何法 代数法 六轴 456轴交再同一点 有解析解 下列公式为正运动学部分结论 a和d是长度 ,theta和alfa是角度 **疑问:alfa00? Z轴互相平行 ** 已知末端要在空间XYZ处如下 绿色项&#x…...
思库拉水厂开业庆典千人大会回顾
近日,思库拉离子水厂在广州隆重举办了开业盛典,现场汇聚了逾千名嘉宾。此次盛会不仅是对思库拉离子水厂正式投产的庆祝,更是对思库拉品牌未来蓝图的一次展示。 现场氛围热烈,洋溢着浓厚的喜庆气息。参与者来自五湖四海,既有思库拉的忠实拥趸,也有对思库拉产品充满兴趣的潜在消费…...
将Wi-Fi模块订阅MQTT主题以获取最新的固件版本推送信息
将Wi-Fi模块订阅MQTT主题以获取最新的固件版本推送信息,是一种常见的物联网(IoT)应用场景。这种设计可以实现远程监控和设备的OTA(Over-The-Air)升级功能。以下是详细的实现步骤和技术细节: 一、系统架构概…...
Netty源码—5.Pipeline和Handler一
大纲 1.Pipeline和Handler的作用和构成 2.ChannelHandler的分类 3.几个特殊的ChannelHandler 4.ChannelHandler的生命周期 5.ChannelPipeline的事件处理 6.关于ChannelPipeline的问题整理 7.ChannelPipeline主要包括三部分内容 8.ChannelPipeline的初始化 9.ChannelPi…...
Vue 中的nextTick函数的原理、作用及使用场景。
大白话Vue 中的nextTick函数的原理、作用及使用场景 在 Vue 里,nextTick 函数是个超实用的工具,它能让你在 DOM 更新完成之后再执行代码。为了能更好地理解 nextTick 函数的原理,咱们就来深入剖析一下。 核心思路 Vue 里的数据更新是异步执…...
详细讲解css的穿透方法
样式穿透(CSS穿透)的几种方法,包括在Vue中使用::v-deep、>>>、/deep/,还有pointer-events属性。还有关于Shadow DOM和::part伪元素的内容。接下来我会把这些方法分类,并详细说明每种方法的适用场景和注意事项…...
深入理解 tree 命令行工具:目录结构可视化的利器
文章目录 前言1. 什么是 tree 命令?安装 tree 2. tree 的基本用法显示当前目录的树状结构显示指定目录的树状结构 3. tree 的常用选项3.1 显示隐藏文件3.2 排除特定目录或文件3.3 限制递归深度3.4 显示文件大小3.5 显示文件的权限信息3.6 将输出保存到文件 4. 实际应…...
【QA】QT中事件和信号的区别以及联系是什么?
在 Qt 中,事件(Event) 和 信号与槽(Signals & Slots) 是 GUI 编程的核心机制,它们既有联系又有本质区别。以下从底层原理、触发流程、代码实现、适用场景四个维度展开对比,并通过大量示例说…...
C++实用函数:find与find_if
本篇来介绍C++中find和find_if函数的使用,通过多个实例来演示。 find用于基础的查找功能,find_if可以实现更复杂的匹配查找条件。 1 find 1.1 函数原型 template <class InputIterator, class T> InputIterator find ( InputIterator first, InputIterator last, c…...
全面了解 Cookies、Session 和 Token
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
酷淘商场项目【从零到一详解】Web端
✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…...
如何转移虚拟主机?最新虚拟主机迁移方法
转移网站并不困难,但选择正确的选项和最佳程序才是关键。网站托管服务被视为当今数字世界的基石,全球有18 亿个网站。网站所有者可以通过下载备份、将其上传到新服务器并指向域名来手动转移网站。他们还可以通过新网站托管商的助手请求来移动网站。对于初…...
JVM 核心知识点总结
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
无人机数据链技术详解,无人机图传数传技术,无人机数据传输技术原理
以下是对无人机数据链技术、无人机图传数传技术以及无人机数据传输技术原理的详细解释: 无人机数据链技术 无人机数据链是任务机、地面控制站之间,以及任务机与中继机、武器系统或其它操作平台之间,按照约定的通信协议和信息传输方式&#…...
【Linux】同步原理剖析及模拟BlockQueue生产消费模型
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
【AVRCP】GOEP互操作性深度解析:蓝牙封面艺术传输的技术实现与演进
目录 一、技术基础:协议架构与核心概念 1.1 GOEP协议体系解析 1.2 IrOBEX协议关键技术 1.3 版本强制性要求 1.4 关键特性对比(GOEP v2.0 vs v1.1) 1.5 关键技术实现细节 1.6 GOEP v2.0互操作性要求 1.7 IrOBEX v1.5互操作性要求 二、…...
三分钟读懂微服务
一、什么是微服务 微服务,简单来说,就是把一个庞大复杂的软件系统,拆分成一个个小型的、独立的服务模块。打个比方,一个大型商场就如同传统的单体架构软件系统,里面所有的店铺、设施都紧密关联在一起。而微服务架构下…...
《Oracle DBA入门实战:十大高频问题详解与避坑指南》
Oracle DBA 入门作业十问十答 本文为 Oracle DBA 入门作业整理,涵盖工具使用、配置管理及权限控制等核心知识点,适合新手快速上手。 如有疑问或补充,欢迎评论区交流! 1. DBA 常用工具有哪些? Oracle Universal Instal…...
深入剖析 Android Compose 框架的自动动画:AnimatedVisibility 与 AnimatedContent(二十四)
深入剖析 Android Compose 框架的自动动画:AnimatedVisibility 与 AnimatedContent 引言 在 Android 应用开发中,动画是提升用户体验的重要手段。它能够让界面元素的显示与隐藏、状态的切换变得更加自然和流畅,避免生硬的变化给用户带来不佳…...
【线程安全问题的原因和方法】【java形式】【图片详解】
在本章节中采用实例图片的方式,以一个学习者的姿态进行描述问题解决问题,更加清晰明了,以及过程中会发问的问题都会一一进行呈现 目录 线程安全演示线程不安全情况图片解释: 将上述代码进行修改【从并行转化成穿行的方式】不会出…...
Cocos Creator Shader入门实战(六):使用setProperty动态设置材质属性,以及材质常用接口
引擎:3.8.5 您好,我是鹤九日! 回顾 上篇文章,我们主要讲解了关于材质的使用,主要有这么几点: 一、没有Effect资源,材质无从说起。 二、材质的构建,支持编译器和代码的动态构建 三…...
编程题记录3
九宫幻方 题目链接:https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋转、镜像得到所有的情况,可以发现情况是可以暴力得出的。…...
Geotools自动识别SLD并生成图例图片实战-以Polygon数据为例
目录 前言 一、Geotools与SLD制图基础 1、SLD是什么 2、SLD有什么用 二、SLD文件的解析与读取 1、SLD结构介绍 2、SLD实例展示 3、SLD读取方法 三、图例生成与展示 1、图例生成流程 2、图例生成实战 3、图例生成展示 四、结论 前言 在地理信息系统(GIS&…...
windows docker如何修改 默认的Container memory usage
参考:https://forums.docker.com/t/docker-on-windows-11-with-wsl2-does-not-use-the-memory-i-set-in-wslconfig/144404/3 参考:https://learn.microsoft.com/en-us/windows/wsl/wsl-config...
LabVIEW液压传动系统教学仿真平台
本文介绍了一种基于LabVIEW的液压传动系统教学仿真平台,该平台采用“老师讲解、线上仿真、线下操作”的复合实验模式,旨在提高实验教学的效率与安全性。通过实例验证,展示了该平台在教学和实际操作中的应用效果,同时也为液压传动系…...
Java实习生面试题(2025.3.23 be)
一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令,它们的主要区别在于渲染策略:v-if 会根据条件决定是否编译元素,而 v-show 则始终编译元素,只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…...
OpenCV第2课 OpenCV的组成结构与图片/视频的加载及展示
1.OpenCV 的组成结构 2.OpenCV 的具体模块 3. 图像的读取 4. 视频的读取 1.OpenCV 的组成结构 OpenCV 是由很多模块组成的,这些模块可以分成很多层: 最底层是基于硬件加速层(HAL)的各种硬件优化。再上一层是opencv_contrib 模块所包含的OpenCV 由其他开发人员所贡献的代…...
Blender导出fbx到Unity找不到贴图的问题
fbx导入Unity材质能不能找到贴图是一件玄学的事情。常见的情况是有些材质能找到,有些找不到: 可能有用的方法 解决方法1:把贴图文件复制过去,模型reimport; 解决方法2:导出时路径模式选复制,内…...