建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11
这次我们继续解读代码,我们主要来看下面两个部分;
至于人脸识别成功的要点我们在最后总结~
具体代码学习:
#定义人脸名称
def name():#预学习照片存放位置path = 'M:/python/workspace/PythonProject/face/'imagePaths=[os.path.join(path,f) for f in os.listdir(path)]for imagePath in imagePaths:name = str(os.path.split(imagePath)[1].split('.',2)[1])names.append(name)
(1)os.path.join()协调文件路径中'/' '\'差异
将多个路径组件智能地拼接成一个完整的路径。由于不同操作系统的差异,os.path.join()
可以根据当前操作系统自动处理这些差异。
补充:不同操作系统使用不同的路径分隔符。
Windows 使用反斜杠 \
,Unix/Linux 和 macOS 使用正斜杠 /
#举例:
import os# 拼接路径
path = os.path.join('home', 'user', 'documents')
print(path)
- 在 Windows 系统上,输出可能是
home\user\documents
。 - 在 Unix/Linux 或 macOS 系统上,输出为
home/user/documents
。
(2)os.listdir()输出某目录下所有文件名
即os.listdir(path)获得了['
1.lss.jpg', '
2.lss.jpg']
os.path.join()将路径M:\python\workspace\PythonProject\face替换为
M:/python/workspace/PythonProject/face/1.lss.jpg
M:/python/workspace/PythonProject/face/2.lss.jpg
os.path.join(path, f)
这里path
是前面指定的目录路径,f
是os.listdir(path)
返回列表中的每个元素(即文件或文件夹名称)。- 代码比较长,我们来看一下这个循环的内容:
这行代码遍历 os.listdir(path)
返回的列表,对每个文件名 调用 os.path.join(path, f)
进行路径拼接,最终将所有拼接好的完整路径组成一个新的列表。
我们可以把整段代码的阅读顺序做如下表达:
让我们继续解读:
for imagePath in imagePaths:name = str(os.path.split(imagePath)[1].split('.',2)[1])names.append(name)
for imagePath in imagePaths是在刚形成的imagePath列表里自己进行循环
(3)os.path.split()将一个文件路径拆分为目录部分和文件名部分。
- 通过上一个代码我们获取了imagePath=M:/python/workspace/PythonProject/face/1.lss.jpg
- os.path.split(imagePath)就是把M:/python/workspace/PythonProject/face/1.lss.jpg拆为:
- 文件目录M:/python/workspace/PythonProject/face/
- 文件名1.lss.jpg
os.path.split(imagePath)[1]是从文件目录和文件名中获取第二个文件名,即1.lss.jpg
补充:这里的第二个元素是因为列表、元组和字符串的索引都是从 0 开始,即[0]代表首位,[1]代表第二个,以此类推。
(4)split()
将字符串按照指定的分隔符分割成多个子字符串,并返回一个包含这些子字符串的列表
str.split(sep=None, maxsplit=-1)
sep
:可选参数,指定分隔符。如果不提供该参数,默认使用空白字符(空格、制表符、换行符等)作为分隔符。maxsplit
:可选参数,指定最大分割次数。如果不提供该参数,表示不限制分割次数。
-
split('.', 2)的含义就是分隔符为 . 最多分隔2次。
-
对
'1.lss.jpg'
调用split( )
后,会得到列表['1', 'lss', 'jpg']
。 -
split('.',2)[1]这里从文件名1.lss.jpg中取出第二个元素,即lss
整行代码解读为:
(5)append()
在列表的末尾添加一个新元素
list.append(object)
list
:表示要操作的列表对象。object
:表示要添加到列表末尾的任意 Python 对象,比如字符串、整数、列表、元组等。
names.append(name)这里就是把开头创建的names列表填进了内容name
解读主函数:
内容我们都学过,就直接标注了
#打开视频test3.mp4读取每一帧
cap=cv2.VideoCapture('test3.mp4')
#调用自定义name函数
name()
while True:#读取视频里的帧flag,frame=cap.read()#如果没有帧则中断if not flag:break#调用自定义face_detect_demo函数,进行人脸识别和标注face_detect_demo(frame)if ord(' ') == cv2.waitKey(10):break
(5)全部代码解读为:
import cv2
#导入与操作系统交互 os 模块
import os#创建一个 LBPH(局部二值模式直方图)人脸识别器对象,用于训练和识别人脸。
recogizer=cv2.face.LBPHFaceRecognizer_create()
#读取训练好的人脸识别模型yml文件
recogizer.read('M:/python/workspace/PythonProject/trainer/trainer.yml')
#初始化一个空列表names,用于存储人脸对应的名称。
names=[]
#初始化一个全局变量warningtime,用于记录未知人脸出现的次数。
warningtime = 1#自定义人脸识别
def face_detect_demo(img):#彩图转化为灰图gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#调用人脸识别分类器face_detector=cv2.CascadeClassifier('M:/python/pythoninstall/Lib/site-packages/cv2/data/haarcascade_frontalface_alt.xml')#灰图中检测人脸face=face_detector.detectMultiScale(gray)for x,y,w,h in face:#原彩图中用红色矩形框人脸cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)#人脸中心画绿圆cv2.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,255,0),thickness=1)#识别输入人脸,获取标签ids,置信度confidenceids, confidence = recogizer.predict(gray[y:y + h, x:x + w])#如果置信度confidence>80if confidence > 80:#warningtime作为全局变量global warningtime#每次出现都+1warningtime += 1#控制台输出warningtime=,值为warningtimeprint('warningtime=',warningtime)#图像上绘制文本,文本是unknown,位置是x向右偏移10个像素。y向上偏移10个像素,字体无衬线,字体大小0.75,绿色cv2.putText(img, 'unknown', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)else:#图像上绘制文本,文本是names列表中的,其余同上#坐标移动规律:+ 号撒腿右下跑,- 号转身左上飘cv2.putText(img,str(names[ids - 1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)#弹出窗口名为resultcv2.imshow('result',img)#定义人脸名称
def name():#预学习照片存放位置path = 'M:/python/workspace/PythonProject/face/'#获取path路径下文件名,将文件名+路径拼接完整路径,将完整路径存到imagePaths中imagePaths=[os.path.join(path,f) for f in os.listdir(path)]for imagePath in imagePaths:#获取文件名中的一部分作为name,即name=lssname = str(os.path.split(imagePath)[1].split('.',2)[1])#将提取出的人脸名称 name 添加到 names 列表中names.append(name)#打开视频test3.mp4读取每一帧
cap=cv2.VideoCapture('test3.mp4')
#调用自定义name函数
name()
while True:#读取视频里的帧flag,frame=cap.read()#如果没有帧则中断if not flag:break#调用自定义face_detect_demo函数,进行人脸识别和标注face_detect_demo(frame)if ord(' ') == cv2.waitKey(10):breakcv2.destroyAllWindows()
cap.release()
print(names)
(6)人脸识别成功的要点
本次识别我们用两张人像即实现了人脸识别,这有赖于LBPH分类器的局部特征特性,少量图片即可识别。同时在素材选择中刻意选择了差异较大的人物,且目标人像的角度基本一致而检测任务则为其他角度。如果想提升识别准确性目前我所了解的一个是提升训练样本量,更改分类器或者用其他方式进行识别。在实验中我尝试了用130多张图用LBPH分类器,但训练效果不佳。所以目前的成果对于材料的选择有较高的要求。
(7)补充[]和()的区别
- 方括号
[]
用于表示列表(list
)。列表是一种可变的、有序的数据集合,列表支持元素的添加、删除、修改等操作 - 方括号
[]
用于索引和切片操作
my_list = [1, 'apple', True]my_list = [1, 2, 3, 4, 5]
# 索引操作,获取第一个元素
first_element = my_list[0]# 切片操作,获取第 2 到第 4 个元素
sub_list = my_list[1:4]
print(sub_list) # 输出: [2, 3, 4]my_tuple = (1, 2, 3, 4, 5)
# 元组的索引操作
first_tuple_element = my_tuple[0]
print(first_tuple_element) # 输出: 1squares = [i**2 for i in range(1, 6)]
- 圆括号
()
用于表示元组(tuple
)。元组是一种不可变的、有序的数据集合,一旦创建就不能修改其元素 - 圆括号
()
用于函数调用。调用函数时,需要使用圆括号将参数括起来。如果函数不需要参数,也需要使用空的圆括号。
my_tuple = (1, 'apple', True)def greet(name):def say_hi():
综上大部分情况都使用圆括号()
(8)总结
- os.path.join()协调文件路径中/\差异
- os.listdir()输出某目录下所有文件名
- os.path.split()将一个文件路径拆分为目录部分和文件名部分
split()
将字符串按照指定的分隔符分割成多个子字符串,并返回一个包含这些子字符串的列表append()
在列表的末尾添加一个新元素
相关文章:
建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11
这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...
全球化趋势下中资企业出海投资及合规运营实战分享
企业全球化布局需构建“战略-架构-合规-运营”四位一体体系,通过灵活的投资架构、精准的税务规划、本土化运营和ESG融合,实现风险可控的海外扩张。核心策略包括: 供应链多节点布局(至少3个国家备份产能);融…...
2025-2-19 leetcode刷题情况(二叉树)
一、226.翻转二叉树 1.题目描述 给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点 2.代码 3.思路 递归遍历(DFS)交换每个节点的左 / 右子节点,即可生成二叉树的镜像。 递归解析: 终止条件&a…...
Linux常见命令
文件和目录操作命令 cd:用于切换目录。例如,cd /home/user 可进入 /home/user 目录;cd.. 可返回上一级目录。ls:用于列出目录内容。ls 直接列出当前目录下的文件和文件夹;ls -l 以详细列表形式显示;ls -a 显…...
C++ 一篇读懂“值传递”和“地址传递”
让我们通过一个简单的、形象的比喻来帮助你理解“值传递”和“地址传递”是如何影响实参的。 1. 值传递 想象你有一个 **信封**(代表变量),里面放着一张纸条(代表数据)。你决定把这个信封寄给一个朋友,让他…...
我用AI做数据分析之数据清洗
我用AI做数据分析之数据清洗 AI与数据分析的融合效果怎样? 这里描述自己在使用AI进行数据分析(数据清洗)过程中的几个小故事: 1. 变量名的翻译 有一个项目是某医生自己收集的数据,变量名使用的是中文,分…...
韩国哈希散列算法DHA-256
韩国哈希散列算法DHA-256 DHA-256是在2005年11月由NIST举行的Hash研讨会(Cryptographic Hash Workshop)上提出的。DHA-256压缩函数将长度为512比特的分组,压缩成长度为256比特的串,总共迭代64步,扩展的消息字在步函数中使用了两次。 DHA-25…...
【愚公系列】《Python网络爬虫从入门到精通》022-Splash的爬虫应用
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
Golang深度学习
前言 在2009年,Google公司发布了一种新的编程语言,名为Go(或称为Golang),旨在提高编程效率、简化并发编程,并提供强大的标准库支持。Go语言的设计者们希望通过Go语言能够解决软件开发中的一些长期存在的问…...
React(8)
封装评论列表的Item组件 实现父传子以及子组件调用父组件方法 import { useEffect, useState } from "react"; import "./index.css"; import _ from "lodash"; import classNames from "classnames"; import axios from "axio…...
自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
苹果的AirTag很贵,虽然某强北有平价代替品,但是仍需要苹果设备才能绑定,才能查看位置。不支持安卓/鸿蒙/PC,也不支持集成到Home Assistant中。 AirTag 的原理 每个AirTag都会发送一个蓝牙信号,其可以被临近的苹果设备…...
docker修改镜像默认存储路径(基于页面迁移)
文章目录 1、停止服务2、拷贝镜像3、docker界面设置路径4、重新启动服务5、重启电脑 1、停止服务 桌面底部右键打开任务管理器 停止docker服务 2、拷贝镜像 从原目录拷贝到新的目录下,新的目录自己定,如果没有权限,需要先对原文件添加权限…...
10. 软件设计架构-经典架构问题
文章目录 前言一、高并发场景下的系统崩溃1. 问题描述2. 解决方案:3. 案例分析:电商秒杀系统 二、单体架构到微服务的拆分陷阱1. 问题描述2. 解决方案:3. 案例分析:在线教育平台拆分 三、分布式系统中的数据一致性难题1. 问题描述…...
Qt学习(五)自定义对话框,多窗口开发---添加设计师类, MDI多窗口开发
一 对话框 实现功能:打开文件,选择目录,保存文件,选择颜色,选择字体,输入信息, 消息提示框 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE na…...
【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》
“谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!” 本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法…...
深入浅出CSS复合选择器:掌控元素关系与层级选择
目录 前言 一、子代选择器(Descendant Selector) 1. 什么是子代选择器? 2. 基本语法 3. 示例 4. 注意事项 二、直接子元素选择器(Child Selector) 1. 什么是直接子元素选择器? 2. 基本语法 3. 示例…...
LLM 推理中推理-时间计算技巧
25年2月来自香港科技大学广州分校的论文“Bag of Tricks for Inference-time Computation of LLM Reasoning”。 随着大语言模型 (LLM) 的进步,解决复杂的推理任务越来越受到关注。推理-时间计算方法(例如 Best-of-N、波束搜索等)特别有价值…...
【模板】图论 最短路 (Floyd+SPFA+Dijkstra)
FloydSPFADijkstra 温故而知新,这三种算法都是求最短路问题常用的算法(特别是Dijkstra) 1.Floyd (多源最短路) 基于动态规划思想,时间复杂度为 O ( N 3 ) O(N^3) O(N3) 较高。 注意点: 初始化距离为INF…...
vite-vue-ts使用arco-design-vue定制主题的后动态变更主题思路
定制主题的后动态变更主题思路 安装依赖与主题定制动态变更主题过程尝试修改主题色(结果失败)尝试修改主题色(结果成功,但是hover的主题色没有变,未覆盖10个梯度的色值)根据主题色实现10个梯度颜色实现10个…...
递归爬取网页测试
我们正在做基于大模型的数据分析平台。 当前需要测试ezdata的递归爬取功能,爬取到第几层 测试网址 https://blog.csdn.net/m0_68177611/article/details/144936089...
【论文学习】RVS-FDSC:一种基于四方向条带卷积的视网膜血管分割方法以增强特征提取
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言论文论文内容RSC模块MSPF2 模块RPDA模块 实验效果 总结互动致谢参考往期回顾 前言…...
交友项目-交友软件简介
一、 项目背景 在线社交是互联网时代的产物,已成为互联网用户的基础需求之一。移动互联网自2003年起快速发展,促使在线社交逐渐从PC端转移至移动端。移动社交最初以熟人社交为主,以维系熟人关系、共享资源信息的形式存在。随着人们交友需求的…...
新手向:SpringBoot后端查询到数据,前端404?(附联调时各传参方式注解总结-带你一文搞定联调参数)
前言: 在 Spring Boot 项目开发中,后端小伙伴可能经常遇到这样诡异的场景: 后台日志显示查询到了数据,但前端却一脸懵逼地告诉你 404 Not Found?接口明明写好了,Postman 直接访问却提示找不到?…...
Elasticsearch7.6.2 安装过程
一. 安装JDK1.8 (1)创建安装目录 mkdir /usr/local/java/ (2)解压至安装目录 tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/java/ (3)设置环境变量 vim /etc/profile 在末尾添加 export JA…...
汇能感知的光谱相机/模块产品有哪些?
CM020A 分辨率:1600H1200V 光谱范围:350~950nm 光谱分辨率:1nm 接口:USB2.0 帧率:16001200 (6帧) 输出格式:Raw 8bit FOV:D73.5H58.8V44.1 相机尺寸:505055mm VM02S10 分辨率…...
【机器学习】K折交叉验证(K-Fold Cross-Validation)
文章目录 K折交叉验证步骤详解一. 核心目标二. 具体步骤与操作三. 关键变体与场景适配3.1 分层K折交叉验证3.2 时间序列K折交叉验证3.3 留一法(LOO)3.4 重复K折交叉验证 四. 实践注意事项五. Python代码示例六. 总结 K折交叉验证步骤详解 一. 核心目标 …...
【核心算法篇十九】《 DeepSeek因果推断:双重差分模型如何破解政策评估的「时空难题」》
一、当AB实验不可行时,我们该相信什么?(因果推断困局解析) 假设某城市推出「夜间地铁免费」政策,市长想知道这个政策是否真的提升了夜间经济。这时候你会发现: 1️⃣ 无法克隆城市:不能同时存在一个「实施政策」和「不实施政策」的平行宇宙 2️⃣ 数据混杂严重:疫情反…...
使用vue3框架vue-next-admin导出列表数据
在 Vue3 中实现 Excel 导出功能可以通过以下步骤完成,这里使用 xlsx 库来实现前端 Excel 导出: 1. 安装依赖 npm install xlsx file-saver # 或 yarn add xlsx file-saver2. 实现代码示例 需要在当前页引入 import * as XLSX from "xlsx";注…...
机器学习(1)安装Pytorch
1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...
讯方·智汇云校华为官方授权培训机构
1.官方授权 讯方智汇云校是华为领先级授权培训机构(华为授权培训合作伙伴(HALP)体系,分为认证、优选、领先三个等级,领先级是HALP最高级),代表着华为对培训合作伙伴在专业能力、师资队伍、合作…...
彻底理解零拷贝技术,zero-copy
计算机处理的任务大体可以分为两类:CPU密集型与IO密集型。当前流行的互联网应用更多的属于IO密集型,传统的IO标准接口都是基于数据拷贝的,这篇文章我们主要关注该怎样从数据拷贝的角度来优化IO性能,让你的程序在IO性能方面赶超P8。…...
使用 MySQL 从 JSON 字符串提取数据
使用 MySQL 从 JSON 字符串提取数据 在现代数据库管理中,JSON 格式因其灵活性而广泛使用。然而,当数据存储在 JSON 中时,我们经常需要将其转换为更易于处理的格式。本篇文章将通过一个具体的 SQL 查询示例,展示如何从存储在 MySQ…...
矛盾(WEB)
##解题思路 打开靶场就是一段自相矛盾的代码,既要num是数字类型,又要判断为1 这种情况我们会想到弱类型的编程语言,插件查看过后,php就是弱类型的语言,此处并非是严格相等,只是 因此可以根据弱类型编程语言…...
优先队列(典型算法思想)—— OJ例题算法解析思路
目录 一、1046. 最后一块石头的重量 - 力扣(LeetCode) 算法代码: 代码思路 使用优先队列(大根堆) 将所有石头放入堆中 模拟碰撞过程 返回最后的重量 代码解析 时间复杂度 示例 输入 输出 二、703. 数据流…...
IGBT的损耗性分析
铝合金外壳设计器地址:嘉立创铝合金外壳/壳体/盒型-让您的产品更出彩 IGBT和MOS的损耗谁大: 电子元器件常见失效模式: 电子元器件的失效模式多种多样,以下是一些常见的失效模式及其原因: 开路: 原因:内部连接断开、焊点断裂、导线断裂等。 影响:电流无法通过,电路中断。…...
TypeScript跟js,es6这些的区别
TypeScript 一、TypeScript 是什么 想象 JavaScript 是一个自由奔放的艺术家,它在创作(编写代码)时不受太多约束,非常灵活,但有时也容易犯错且难以调试。而 TypeScript 就像是给这位艺术家配备了一套精确的工具和规范…...
单例模式代码示例
饿汉式:在类加载时就创建单例实例,线程安全。代码如下: public class Singleton {// 私有静态实例private static final Singleton instance new Singleton();// 私有构造函数private Singleton() {}// 公共访问方法public static Singleto…...
掌握 ElasticSearch的 _source 过滤
掌握 ElasticSearch的 _source 过滤 1. 引言2. _source 元数据基础2.1 什么是 _source 字段?2.2 _source 的基本用法 3. 禁用 _source3.1 如何禁用 _source 字段3.2 禁用 _source 的利弊3.3 最佳实践建议 4. _source 数据源过滤4.1 为什么需要数据源过滤?…...
车载音频配置(二)
目录 OEM 自定义的车载音频上下文 动态音频区配置 向前兼容性 Android 14 车载音频配置 在 Android 14 中,AAOS 引入了 OEM 插件服务,使你可以更主动地管理由车载音频服务监督的音频行为。 随着新的插件服务的引入,车载音频配置文件中添加了以下更改: • OEM 自定义的车…...
开目3DCAPP系列:三维制造成本分析与估算软件3DDFC
开目3DDFC 是一款基于 MBD 模型和工艺知识库的专业三维制造成本分析与估算软件,在不依赖详细工艺路线的情况下,根据零件几何信息和精度信息一键式完成零件成本的分析与估算,为面向成本的设计优化提供参考指引,也为企业对外产品报价…...
化学品安全数据表(MSDS)的全面解析与实用指南
SDS(安全数据表),也称为MSDS(材料安全数据表),是用于详细说明化学品的理化特性(如pH值、闪点、易燃性、反应活性等)及其对使用者健康(如致癌、致畸等)潜在危害…...
赛前启航 | Azure 应用开发实战指南:开启创意的无限可能
在 AI 时代,如何高效构建、优化和部署你的应用?如何充分利用微软 Azure 的强大能力,让开发更敏捷,性能更卓越?2 月 21 日 14:00-16:00,微软 AI 开发者挑战赛赛前指导第二场直播,带你全方位掌握 …...
Visual Studio Code的下载安装与汉化
1.下载安装 Visual Studio Code的下载安装十分简单,在本电脑的应用商店直接下载安装----注意这是社区版-----一般社区版就足够用了---另外注意更改安装地址 2.下载插件 重启后就是中文版本了...
home assistant ddns动态域名解析插件
home assistant ddns动态域名解析插件 使用方法 在HACS中搜索 ddns安装(hacs目前还没有合并我的提交,目前不可用),或者 clone https://github.com/weiangongsi/ddns.git, 将 custom_components/ddns目录拷贝至 Home Assistant 配置目录的 custom_compon…...
金融交易算法单介绍
0.背景 股票交易时,常见的订单类型有基础订单和条件订单。 基础订单 市价单限价单碎股单等等 条件订单 止损市价单止损限价单触及市价单(止盈)触及限价单(止盈)跟踪止损市价单跟踪止损限价单等等 除了基础订单和…...
LabVIEW利用CANopen的Batch SDO写入
本示例展示了如何通过CANopen协议向设备写入Batch SDO(批量服务数据对象)。Batch SDO允许用户在一次操作中配置多个参数,适用于设备的批量配置和参数设置。此方法能够简化多个参数的写入过程,提高设备管理效率。 主要步骤…...
正式页面开发-登录注册页面
整体路由设计: 登录和注册的切换是切换组件或者是切换内容(v-if和 v-else),因为点击两个之间路径是没有变化的。也就是登录和注册共用同一个路由。登录是独立的一级路由。登录之后进到首页,有三个大模块:文章分类&…...
vLLM专题(二):安装-CPU
vLLM 是一个 Python 库,支持以下 CPU 变体。选择您的 CPU 类型以查看供应商特定的说明: Intel/AMD x86 vLLM 最初支持在 x86 CPU 平台上进行基本模型推理和服务,支持的数据类型包括 FP32、FP16 和 BF16。 注意 此设备没有预构建的 wheel 包或镜像,因此您必须从源代码构建 v…...
【CSS进阶】常见的页面自适应的方法
在前端开发中,自适应布局(Responsive Design)是一种让网页能够适应不同屏幕尺寸、设备和分辨率的技术。常见的自适应布局方法包括 流式布局、弹性布局(Flexbox)、栅格布局(Grid)、媒体查询&…...
Java编程语言:从基础到高级应用的全面探索
在当今的软件开发领域中,Java无疑是一种极为流行且强大的编程语言。自1995年由Sun Microsystems推出以来,Java凭借其跨平台性、面向对象特性和丰富的API库,迅速成为企业级应用开发的首选语言。本文将带您从Java的基础语法入手,逐步…...