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

基于OpenCV的图片和视频人脸识别

目录

🥩前言

🍖环境使用

🍖模块使用

🍖模块介绍

🍖模块安装问题:

🥩人脸检测

🍖Haar 级联的概念

🍖获取 Haar 级联数据

🍗 1.下载所需版本

🍗 2.安装文件

 🍗 3.XML文件名称

🥩使用 OpenCV 进行人脸检测

🍖静态图像中人脸检测

🍗【示例】识别图片中的人脸

🍗 运行效果:

 🍗【示例】识别图片中多张人脸

🍗 运行效果:

 🍖视频中的人脸检测

🍗【示例】识别视频中人脸

🍗 运行效果:

🥩人脸识别

🍖训练数据

🍗【示例】训练数据

🍗【示例】基于 LBPH 的人脸识别

🍗 运行效果:

🥩总结


🥩前言

1b83b1d3fff541e6844ba7bfc4b8f724.gif

我们身边的人脸识别有车站检票,监控人脸,无人超市,支付宝人脸支付,上班打卡,人脸解锁手机。

人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸,是人脸识别、表情识别等下游任务的基础。人脸识别是通过采集包含人脸的图像或视频数据,通过对比和分析人脸特征信息从而实现身份识别的生物识别技术,是人脸识别系统的核心组件

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容,基于OpenCV的图片和视频人脸识别。介绍Haar的概念,以及如何对图片和视频中进行人脸检测,以及如何训练我们自己的模型,并在自己的模型下进行人脸识别。

🍖环境使用

  • python 3.9
  • pycharm

🍖模块使用

  • opencv-python

🍖模块介绍

  1. opencv

关于OpenCv

Opencv是一个开源的的跨平台计算机视觉库,内部实现了图像处理和计算机视觉方面的很多通用算法,对于python而言,在引用opencv库的时候需要写为import cv2。其中,cv2是opencv的C++命名空间名称,使用它来表示调用的是C++开发的opencv的接口。

目前人脸识别有很多较为成熟的方法,这里调用OpenCv库,而OpenCV又提供了三种人脸识别方法,分别是LBPH方法、EigenFishfaces方法、Fisherfaces方法。本文采用的是LBPH(Local Binary Patterns Histogram,局部二值模式直方图)方法。在OpenCV中,可以用函数cv2.face.LBPHFaceRecognizer_create()生成LBPH识别器实例模型,然后应用cv2.face_FaceRecognizer.train()函数完成训练,最后用cv2.face_FaceRecognizer.predict()函数完成人脸识别。

CascadeClassifier,是Opencv中做人脸检测的时候的一个级联分类器。并且既可以使用Haar,也可以使用LBP特征。其中Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。

🍖模块安装问题:

  • 如果安装python第三方模块:

win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

在pycharm中点击Terminal(终端) 输入安装命令

  • 安装失败原因:

 

  • 失败一: pip 不是内部命令

                解决方法: 设置环境变量

  • 失败二: 出现大量报红 (read time out)

                解决方法: 因为是网络链接超时, 需要切换镜像源

   

    清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:https://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:https://pypi.hustunique.com/山东理工大学:https://pypi.sdutlinux.org/豆瓣:https://pypi.douban.com/simple/例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

 

  • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入

                解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好,或者你pycharm里面python解释器没有设置好。

🥩人脸检测

🍖Haar 级联的概念

        Haar级联是一种基于Haar特征的目标检测方法,它由多个级联分类器组成,每个级联分类器由多个弱分类器组成。在目标检测中,Haar级联通过逐级检测,将输入图像分成多个子区域,然后在每个子区域中应用Haar特征进行分类。这种级联的方式可以大大减少计算量,提高检测速度,同时保证较高的准确性。Haar级联在人脸识别、车辆识别等领域有着广泛的应用。

        提取出图像的细节对产生稳定分类结果和跟踪结果很有用。这些提取的结果被称为特征,专业的表述为:从图像数据中提取特征。虽然任意像素都可以能影响多个特征,但特征应该比像素少得多。两个图像的相似程度可以通过它们对应特征的欧氏距离来度量。

        Haar 特征是一种用于实现实时人脸跟踪的特征。每一个 Haar 特征都描述了相邻图像区域的对比模式。例如,边、顶点和细线都能生成具有判别性的特征。

🍖获取 Haar 级联数据

🍗 1.下载所需版本

        首先我们要进入 OpenCV 官网:https://opencv.org  下载你需要的版本。点击 RELEASES

(发布)。如下图所示:

ebd103675b714a2a987287463d36025e.png

         由于 OpenCV 支持好多平台,比如 Windows, Android, Maemo, FreeBSD, OpenBSD, iOS,

Linux 和 Mac OS,一般初学者都是用 windows,点击 Windows。

faa9ffbcae7640c0a738c5086d682597.png

        点击 Windows 后跳出下面界面,等待 5s 自动下载。

🍗 2.安装文件

        文件下载好后,然后双击下载的文件,进行安装,实质就是解压一下,解压完出来一个文件夹,其他什么也没发生。安装完后的目录结构如下。其中 build 是 OpenCV 使用时要用到的一些库文件,而 sources 中则是 OpenCV 官方为我们提供的一些 demo 示例源码。

5f0dc52b8f614cdfa887ae13afb4b06c.png

        在 sources 的一个文件夹 data/haarcascades。该文件夹包含了所有 OpenCV 的人脸检测的

XML 文件,这些可用于检测静止图像、视频和摄像头所得到图像中的人脸。

1de2d098eaab4350b6b4b5911557dc3d.png

 🍗 3.XML文件名称

人脸检测器(默认):haarcascade_frontalface_default.xml

人脸检测器(快速 Harr):haarcascade_frontalface_alt2.xml

人脸检测器(侧视):haarcascade_profileface.xml

眼部检测器(左眼):haarcascade_lefteye_2splits.xml

眼部检测器(右眼):haarcascade_righteye_2splits.xml

嘴部检测器:haarcascade_mcs_mouth.xml

鼻子检测器:haarcascade_mcs_nose.xml

身体检测器:haarcascade_fullbody.xml

人脸检测器(快速 LBP):lbpcascade_frontalface.xml

🥩使用 OpenCV 进行人脸检测

🍖静态图像中人脸检测

        人脸检测首先是加载图像并检测人脸,这也是最基本的一步。为了使所得到的结果有意义,可在原始图像的人脸周围绘制矩形框。

🍗【示例】识别图片中的人脸

        我们首先来识别图片中的人脸,我们先识别图片中的一张人脸,假如,我们测试的照片有两张人脸的话,就会只显示一个人脸。

import cv2 as cv
def face_detect_demo():#将图片转换为灰度图片gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector=cv.CascadeClassifier('E:\Program Files (x86)\Python39\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')faces=face_detector.detectMultiScale(gray)for x,y,w,h in faces:cv.rectangle(img,(x,y),(x+w,y+h),color=(0,255,0),thickness=2)cv.imshow('result',img)
#加载图片
img=cv.imread('text1.jpg')
face_detect_demo()
cv.waitKey(0)
cv.destroyAllWindows()

🍗 运行效果:

 e37817b6220c4689ae306c3d7c83711b.png

 🍗【示例】识别图片中多张人脸

        ​​​​​​​我们前面识别了图片中的一张人脸,假如,我们想测试的照片有两张人脸的话,怎么办?前面的代码就实现不了了,我们来看看多张人脸是怎么实现的。

import cv2 as cv
def face_detect_demo():#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector = cv.CascadeClassifier('E:\Program Files (x86)\Python39\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')faces = face_detector.detectMultiScale(gray)for x,y,w,h in faces:print(x,y,w,h)cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,255,0),thickness=2)#显示图片cv.imshow('result',img)#加载图片
img=cv.imread('text2.jpg')
#调用人脸检测方法
face_detect_demo()
cv.waitKey(0)
cv.destroyAllWindows()

🍗 运行效果:

        我们找了一个多张人脸的照片,相信大家对这张图片并不陌生,我们可以清晰的看到,我们准确无误的识别到了每一张人脸。

27d6915101d449d0943c55a2974091f6.png

🍖视频中的人脸检测

        视频是一张一张图片组成的,在视频的帧上重复这个过程就能完成视频中的人脸检测。

视频中的人脸检测可以通过以下步骤实现:

  1. 图像预处理:对输入的视频帧进行预处理,包括图像增强、图像滤波、图像二值化等操作,以增强图像的对比度和亮度,减少噪声的影响,提高图像的质量。
  2. 特征提取:使用图像处理算法,如SIFT、SURF、ORB等,提取视频帧中的特征,如人脸的位置、大小、形状、姿态等信息,作为人脸检测的基础。
  3. 人脸检测:使用人脸检测算法,如Haar Cascade、LBPH、LBPH-SIFT等,对视频帧中的图像进行人脸检测,得到检测到的人脸的位置、大小、形状等信息。
  4. 人脸跟踪:使用人脸跟踪算法,如OpenCV中的人脸跟踪算法,对检测到的人脸进行跟踪,得到人脸的位置、大小、形状等信息。
  5. 人脸识别:使用人脸识别算法,如支持向量机、深度学习等,对人脸跟踪得到的人脸进行识别,得到人脸的身份信息。

🍗【示例】识别视频中人脸

        视频是一张一张图片组成的,在视频的帧上重复这个过程就能完成视频中的人脸检测。我们看看代码是如何实现的。

import cv2 as cv
def face_detect_demo(img):#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector = cv.CascadeClassifier('E:\Program Files (x86)\Python39\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')faces = face_detector.detectMultiScale(gray)for x,y,w,h in faces:cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)cv.circle(img,center=(x+w//2,y+h//2),radius=(w//2),color=(0,255,0),thickness=2)cv.imshow('result',img)
#读取视频
cap=cv.VideoCapture('video.mp4')
while True:flag,frame=cap.read()print('flag:',flag,'frame.shape:',frame.shape)if not flag:breakface_detect_demo(frame)if ord('q') == cv.waitKey(10):break
cv.destroyAllWindows()
cap.release()

🍗 运行效果:

        这里我就不放视频了,我放一张视频的截图,我们可以清楚的看到,可以清晰的识别到我们的人脸。

52dfee8e214747c59ab6b8cdeced3805.png

🥩人脸识别

        人脸检测是 OpenCV 的一个很不错的功能,它是人脸识别的基础。什么是人脸识别呢?

其实就是一个程序能识别给定图像或视频中的人脸。实现这一目标的方法之一是用一系列分好类的图像来“训练”程序,并基于这些图像来进行识别。

        这就是 OpenCV 及其人脸识别模块进行人脸识别的过程。

        人脸识别模块的另外一个重要特征是:每个识别都具有转置信(confidence)评分,因此可在实际应用中通过对其设置阈值来进行筛选。

        人脸识别所需要的人脸可以通过两种方式来得到:自己获得图像或从人脸数据库免费获得可用的人脸图像。互联网上有许多人脸数据库。

        为了对这些样本进行人脸识别,必须要在包含人脸的样本图像上进行人脸识别。这是一个学习的过程,但并不像自己提供的图像那样令人满意。

🍖训练数据

        有了数据,需要将这些样本图像加载到人脸识别算法中。所有的人脸识别算法在它们的train()函数中都有两个参数:图像数组和标签数组。这些标签表示进行识别时候某人人脸的ID,因此根据 ID 可以知道被识别的人是谁。要做到这一点,将在「trainer/trainer」目录中保存为.yml文件。

🍗【示例】训练数据

import os
import cv2
import sys
from PIL import Image
import numpy as npdef getImageAndLabels(path):facesSamples = []ids = []imagePaths = [os.path.join(path, f) for f in os.listdir(path)]# 检测人脸face_detector = cv2.CascadeClassifier('E:\Program Files (x86)\Python39\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')# 遍历列表中的图片for imagePath in imagePaths:# 打开图片PIL_img = Image.open(imagePath).convert('L')# 将图像转换为数组img_numpy = np.array(PIL_img, 'uint8')faces = face_detector.detectMultiScale(img_numpy)# 获取每张图片的idid = int(os.path.split(imagePath)[1].split('.')[0])for x, y, w, h in faces:facesSamples.append(img_numpy[y:y + h, x:x + w])ids.append(id)return facesSamples, idsif __name__ == '__main__':# 图片路径path = './data/jm/'# 获取图像数组和id标签数组faces, ids = getImageAndLabels(path)# 获取训练对象recognizer = cv2.face.LBPHFaceRecognizer_create()recognizer.train(faces, np.array(ids))# 保存文件recognizer.write('trainer/trainer.yml')

🍖基于 LBPH 的人脸识别

        LBPH(Local Binary Pattern Histogram)将检测到的人脸分为小单元,并将其与模型中的对应单元进行比较,对每个区域的匹配值产生一个直方图。由于这种方法的灵活性,LBPH是唯一允许模型样本人脸和检测到的人脸在形状、大小上可以不同的人脸识别算法。

        调整后的区域中调用 predict()函数,该函数返回两个元素的数组:第一个元素是所识别个体的标签,第二个是置信度评分。所有的算法都有一个置信度评分阈值,置信度评分用来衡量所识别人脸与原模型的差距,0 表示完全匹配。可能有时不想保留所有的识别结果,则需要进一步处理,因此可用自己的算法来估算识别的置信度评分。LBPH 一个好的识别参考值要低于 50 ,任何高于 80 的参考值都会被认为是低的置信度评分。

🍗【示例】基于 LBPH 的人脸识别

import cv2
import numpy as np
import os
#加载训练数据集文件
recogizer=cv2.face.LBPHFaceRecognizer_create()
recogizer.read('trainer/trainer.yml')
#准备识别的图片
img=cv2.imread('19.pgm')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
face_detector = cv2.CascadeClassifier('E:\Program Files (x86)\Python39\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
faces = face_detector.detectMultiScale(gray)
for x,y,w,h in faces:cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)#人脸识别id,confidence=recogizer.predict(gray[y:y+h,x:x+w])print('标签id:',id,'置信评分:',confidence)
cv2.imshow('result',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

🍗 运行效果:

标签id: 15 置信评分: 84.05495321482604

🥩总结

        随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。介绍Haar的概念,以及如何对图片和视频中进行人脸检测,以及如何训练我们自己的模型,并在自己的模型下进行人脸识别。

 

6adf31c8c5dd4e6a83314f4805b30bc1.jpg

 

相关文章:

流媒体学习之路(WebRTC)——GCC中ProbeBitrateEstimator和AcknowledgedBitrateEstimator的大作用(7)

流媒体学习之路(WebRTC)——GCC中ProbeBitrateEstimator和AcknowledgedBitrateEstimator的大作用(7) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力&a…...

报错:TS2732: Cannot find module data.json. Consider using --resolveJsonModule to import module with...

报错:TS2732: Cannot find module data.json. Consider using --resolveJsonModule to import module with... 解决方案:将tsconfig.json中的resolveJsonModule设置为true即可...

使用PyTorch实现L1, L2和Elastic Net正则化

在机器学习中,L1正则化、L2正则化和Elastic Net正则化是用来避免过拟合的技术,它们通过在损失函数中添加一个惩罚项来实现。 https://avoid.overfit.cn/post/c99ec105e41c4a71a0a1a29735245944...

746-便携式8路高频电压电流信号测试仪

便携式8路高频电压电流信号测试仪一、平台简介便携式手提8路高频电压电流信号测试仪,以FPGA AD卡和X86主板为基础,构建便携式的手提设备。FPGA AD卡是以Kintex-7XC7K325T PCIeX4的AD卡,支持8路24bit AD采集。北京太速科技,平台默认操作系统为win7 64位系统;具备丰富的外设…...

第4章 Vim编辑器与Shell命令脚本

第4章 Vim编辑器与Shell命令脚本 1. Vim文本编辑器2. 编写Shell脚本2.2 接收用户的参数2.3 判断用户的参数 3. 流程控制语句3.1 if条件测试语句3.2 for条件循环语句3.3 while条件循环语句3.4 case条件测试语句 4. 计划任务服务程序复习题 1. Vim文本编辑器 Vim编辑器中设置了三…...

异常处理方式

(1)对应下层: 首先记录异常日志(或debug状态下激活调试光标,可以查看ex),然后向上throw (2)对于最上层:首先要记录日志(或debug状态下激活调试光标,可以查看ex),然后 呈现 或 输出 “异常 或 错误消息” (3)在未捕获异常事件中,要做到处理,放置崩溃 (4)在…...

基于OpenCV的图片和视频人脸识别

目录 🥩前言 🍖环境使用 🍖模块使用 🍖模块介绍 🍖模块安装问题: 🥩人脸检测 🍖Haar 级联的概念 🍖获取 Haar 级联数据 🍗 1.下载所需版本 🍗 2.安…...

比肩ChatGPT的国产AI:文心一言——有话说

🔗 运行环境:chatGPT,文心一言 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好&am…...

剑指offer JZ77 按之字形顺序打印二叉树

Java JZ77 按之字形顺序打印二叉树 文章目录Java JZ77 按之字形顺序打印二叉树一、题目描述二、双栈法三、队列reverse()法使用双栈法和队列reverse()法解决剑指offer JZ77 按之字形顺序打印二叉树的问题。 一、题目描述 给定一个二叉树,返回该二叉树的之字形层序遍…...

【Azure 架构师学习笔记】-Azure Data Factory (5)-Managed VNet

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 接上文【Azure 架构师学习笔记】-Azure Data Factory (4)-触发器详解-事件触发器 前言 PaaS服务默认都经过公网传输, 这对很多企业而言并不安全,那么就需要对其进行安全改…...

聚类算法层次聚类

###cluster.py #导入相应的包 import scipy import scipy.cluster.hierarchy as sch from scipy.cluster.vq import vq,kmeans,whiten import numpy as np import matplotlib.pylab as plt #生成待聚类的数据点,这里生成了20个点,每个点4维: pointsscipy.randn(20,4) #加一…...

大数据写入到Oracle数据库(批量插入数据)

开发中经常遇到批量插入数据的需求,为了提高开发效率大多会使用ORM架构,个别之处 才会手写SQL,我们使用C#.NET Core5.0开发,所以优先选择了微软的EF。 但是EF原生没有批量操作功能,需要自己扩展或使用第三方的扩展&am…...

【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字 p205 -- Java Version

题目链接:https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/ 1. 题目介绍(39. 数组中出现次数超过一半的数字) 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可…...

es-head插件插入查询以及条件查询(五)

es-head插件插入查询以及条件查询 1.es-head插件页面介绍 页面详细介绍 2.es-head查询语句 2.1.查询索引中的全部数据 curl命令交互,采用GET请求 语法格式: curl -XGET es地址:9200/索引名/_search?pretty [rootelaticsearch ~]# curl -XGET 192…...

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例: 1、安装anaconda:(anaconda自带Python,安装了anaconda就不用再安装Python了) 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…...

基于微信小程序的图书馆选座系统源码

开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具 技术说明: springboot mybatis 小程序 代码注释齐全,没有多余代码,适合学习(…...

特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?

近日,在中欧智能网联汽车协会秘书长林示的组织下,中益基金投资总监王子文考察了全球毫米波雷达领跑者—木牛科技。 考察过程中,木牛科技COO王卫向两位详细介绍了木牛科技具备怎样的全球毫米波雷达领跑者的科技硬实力,以及木牛科技…...

[golang gin框架] 10.Gin 商城项目介绍

一.商城项目介绍 1.详细功能介绍图 2.数据库 ER 图 需要用到的数据表举例 二.MVC架构搭建以及执行流程分析 1.关于 MVC 模式的简单介绍 Gin 不是一个 MVC 的框架,所有的代码都可以写在 main.go 中。当我们的项目比较大的时候, 所有代码写在一个文件里面…...

python@调用系统命令行@os.system@subprocess@标准输入输出@sys.stdin@sys.stdout@input@print

文章目录python调用系统命令行os.system标准输入输出sys.stdinsys.stdoutinputprint概要os.systemdemoswindows命令解释器ComSpecsubprocessrecommended🎈基本用法demos标准输入输出sys.stdininput()sys.stdin.inputinput()交互模式小结sys.stdoutsys.stdout.wirte(…...

15-哈希表

哈希表(Hash table),也称散列表,是一个能够将数值映射而成地址从而进行直接访问的数据结构,通过哈希表我们可以快速、迅捷地访问数据。 哈希表原理 假设我们拥有一个数x(也称关键值,key&#…...

【超详细文件操作(三)】C语言

作者:日出等日落 专栏:C语言 只有流过血的手指,才能弹出世间的绝唱。 ——泰戈尔 目录 1.文件的随机读写 1.1 fseek函数 1.1.1 下面使用fseek函数 1.2 ftell函数 1.3 rewind函数 …...

【数据分析之道-基础知识(四)】字典

文章目录专栏导读1、字典简介2、字典创建3、字典访问4、字典修改5、字典添加6、字典删除7、字典内置函数专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》,本专栏…...

【计组】RAM的深入理解

一、存储机理 RAM的实现逻辑有种,分别是触发器和电容。 SRAM(Static)DRAM(Dynamic)存储方式触发器电容破坏性读出否(触发器具有稳态,能够锁住0或1两种状态)是(电容需要…...

51单片机学习笔记_13 ADC

ADC 使得调节开发板上的电位器时,数码管上能够显示 AD 模块 采集电位器的电压值且随之变化。 开发板上有三个应用:光敏电阻,热敏电阻,电位器。 一般 AD 转换有多个输入,提高使用效率。 ADC 通过地址锁存与译码判断采…...

JVM 常量池

Class文件常量池 每个Class文件都会有一个单独的常量池,我们称为Class文件常量池,我们可以用javap命令反汇编Class文件,可以查看java编译器为我们生成的字节码。 CLass文件常量池存下内容: 字面量: 文本字符串(代码中用双引号包裹的字符串部分的值)被…...

Leetcode.1024 视频拼接

题目链接 Leetcode.1024 视频拼接 Rating : 1746 题目描述 你将会获得一系列视频片段,这些片段来自于一项持续时长为 time秒的体育赛事。这些片段可能有所重叠,也可能长度不一。 使用数组 clips描述所有的视频片段,其中 clips[i…...

彩色滤镜阵列CFA与Bayer滤镜

彩色滤镜阵列(CFA) 在彩色光电摄影中,可以通过分光,使用三个传感器分别捕获红、绿、蓝三个通道的颜色分量。但为了降低成本,绝大部分成像系统中采用单芯片 CMOS、CCD 传感器结合彩色滤镜阵列(Color Fiter Array&#…...

Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)

UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元,想着在读研期间做点对自己有意义的事,因此选择了动漫人物生成方向(呜呜呜,太感谢导师理解和支持了)…...

SpringBoot实现自己的日志服务

日志服务是作为软件开发架构的必备服务之一,一直都是我们所关注,所考虑的服务关键点,一个优秀的日志服务可以为项目的维护提供有力的支持,提高了系统的可靠性。 前言 如何设计一个优秀而又可靠的日志服务,是一直以来都…...

基于ssm流浪动物救助及领养管理系统(文档)024

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…...

maven安装及配置(IDEA版)简洁

1.下载Maven:您可以从Maven官方网站(https://maven.apache.org/download.cgi)下载适合您操作系统的Maven版本,并解压缩到您想要安装的位置。 2.配置环境变量:将Maven的bin目录添加到PATH环境变量中,这样…...

最全Linux应用开发解析(持续更新)

一、文件IO 1.1 文件描述符 在 Linux 操作系统中的一切都被抽象成了文件,那么一个打开的文件是如何与应用程序进行对应呢? 解决方案是使用文件描述符(file descriptor,简称fd),当在进程中打开一个现有文…...

SpringBoot学习笔记下

文章目录1 接口架构风格 —RESTful1.1 REST1.2 在页面中或者ajax中,支持put,delete请求2 Spring Boot 集成 Redis2.1 redis起步依赖2.2 对比 StringRedisTemplate 和 RedisTemplate3 SpringBoot集成Dubbo3.1 看 SpringBoot继承Dubbo的文档3.2 公共项目7.…...

小米12/12S/13Pro手机MIUI14系统小黄鸟(HttpCanary)CA证书无法注入问题

很多用户获取ROOT是为了抓包,这里一般常常依赖一款名叫HttpCanary的软件,因软件 图标是一只小鸟,我们经常叫他小黄鸟。从日常使用上来看,黄鸟确实有抓包获取数据等 功能,也在多个手机上实践成功,网上相关教…...

SpringCloud学习笔记(四)Docker

一、Docker如何解决依赖的兼容问题 将应用的libs(函数库)、Deps(依赖)、配置与应用一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离 二、Dokcer如何解决开发、测试、生…...

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件,或者是批量更改数量,还是组件里面的一些标识,当处理这些批量数据处理的业务时,BOM的批量更改一个想到的就是CS20,但是CS20当BOM需要替换的时候就不是很适用。新增的组…...

基于OpenTelemetry实现可观测性-Part 4 Collector

译注:这是一个系列,共分成6部分,这是第4部分。翻译自:https://trstringer.com/otel-part4-collector/在上一篇博文中,我们讨论了如何使用 SDK 和追踪器提供者从进程获取遥测数据。存在很多不同类型的导出器&#xff0c…...

STM32学习(十二)

软件定时原理 使用纯软件(CPU死等)的方式实现定时(延时)功能。 不精准:函数调用压栈进栈需要耗费额外的时间;流水线使得程序执行时间不确定。CPU死等。 定时器定时原理 使用精准的时基,通过…...

Python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计 1 网上商城系统 这是一个基于pythonvue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能…...

组装式交付-云巧 知多少

组装式交付-云巧 知多少组装式交付背景云巧什么是云巧呢?云巧的优势丰富的组件,提升代码复用全面的集成方式,支持模块化组装云原生标准,预集成阿里云产品云巧的构成云巧组件云巧资产市场云巧生态云巧工坊总结组装式交付背景 一直…...

「解析」牛客网-华为机考企业真题 41-60

又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工…...

RPA机器人在信息化管理、报告生成实现自动化成为生态环境局新宠

随着人们对环境和自然资源的保护意识逐渐增强,我国在环保领域的投入力度也越来越大。然而,环境保护任务的繁重与复杂,也意味着环保执法机关需要更加高效、精准的手段来完成任务。这时,“机器人流程自动化”(简称RPA&am…...

关于线程池你了解些什么?

前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...

基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优

目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...

低代码开发:助力企业高效实现数字转型的一大利器

随着互联网、移动互联网、物联网等技术的迅速普及和应用,数字经济时代的到来,人们的生产、消费和生活方式都发生了巨大的变化,而传统企业也面临着巨大的挑战和机遇。 在数字经济时代,数据成为一种重要的生产要素。数据成为一种重要…...

centos7安装mysql并添加密码

网上找的教程有的是不能用,有的是改密码有问题,下面这个教程亲测可用 #安装wget,wget是Linux中的一个下载文件的工具 yum -y install wget #使用wget下载文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-com…...

大数据未来发展怎么样?

就目前情况来看,大数据行业前景不错薪资待遇好,也有越来越多的人选择大数据行业,各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广,不管是科技领域还是食品产业,零售业等都是需要大数据人才进行大数据的处…...

图书管理系统(考试样品)

一、执行下面的sql CREATE DATABASE bms CHARACTER SET utf8mb4;USE bms;DROP TABLE IF EXISTS tb_book;CREATE TABLE tb_book (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,desc TEXT ,type_id INT DEFAULT NULL,PRIMARY KEY (id) ) ; INSERT INTO tb_book VA…...

树与二叉树(图示超详解哦)

这里写目录标题引言树与二叉树树的概念及结构树的表示二叉树特殊的二叉树二叉树的性质二叉树的表示顺序结构链式结构总结引言 在前面的一段时间里,我们学习了顺序表、链表、栈、队列的知识。其实这些顺序结构都是线性的,它们的逻辑结构都是一条线穿起来…...

【vue3】数据绑定,动态渲染class与style

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式(style)。因为 class 和 style 都是 attribute,我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时&#xff0c…...

axios使用

参考地址&#xff1a;https://github.com/axios/axios html CDN <script src"https://cdn.jsdelivr.net/npm/axios1.1.2/dist/axios.min.js"></script>或者 <script src"https://unpkg.com/axios1.1.2/dist/axios.min.js"></scrip…...

countup.js 数字动画

countup.js 数字动画1. 安装2. 参数3. Vue组件封装3.1 组件代码3.2 调用方式1. 安装 npm i countup.js2. 参数 项目Valuetargetstring, HTMLElement ,HTMLInputElement - id of html element, input, svg text element, or DOM element reference where counting occursendV…...

10个问题带你全面理解Linux性能优化

1. 为什么面试官喜欢考察性能优化问题&#xff1f; 面试官考察性能优化问题的目的可能并不是要你设计一个性能很高的系统&#xff0c;而是为了全方位考察一个面试者的知识背景和实践能力。 1) 性能优化涉及的知识面既需要深度&#xff0c;同时又需要一定的广度 从深度上来说…...

php使用yield处理大数据文件

1.概述 yield和return有点像&#xff0c;它是一个生成器&#xff0c;对PHP应用的性能有非常大的影响&#xff0c; 只有在调用的时候才会执行&#xff0c;并不产生多余的值&#xff0c;比如读取一个很大的文件或者计算大量的数据时&#xff0c;如果直接读取很有可能内存就爆了&a…...

数据更新 | CnOpenData法拍房数据

法拍房数据 一、数据简介 法拍房&#xff0c;即“法院拍卖房产”&#xff0c;是被法院强制执行拍卖的房屋 。当债务人&#xff08;业主&#xff09;无力履行借款合约或无法清偿债务时&#xff0c;而被债权人经司法程序向法院申请强制执行&#xff0c;将债务人名下房屋拍卖&…...

(一)kafka从入门到精通之初识kafka

一、发布订阅系统 在学习kafka之前&#xff0c;我们先来看看什么是发布订阅系统。 概念 数据的发送者不会直接把消息发送给接收者&#xff0c;这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类&#xff0c;接受者订阅它们&#xff0c;以便接受特定类型的消…...

华纳云:美国服务器的几种防火墙类型介绍

美国服务器的防火墙主要是用于在系统的内外网之间构建一道相对隔绝的保护屏障&#xff0c;用来保障美国服务器的网络安全免受恶意流量的影响&#xff0c;与其他地区的服务器并无本质上的不同&#xff0c;通常可以使用以下几种类型的防火墙&#xff1a; 软件防火墙&#xff1a;软…...

儿童珠宝首饰出口美国做什么认证?CPC认证儿童珠宝首饰

儿童珠宝首饰指原则上由 12 岁及以下儿童作为装饰品移除或穿戴的商品。本政策涵盖的儿童珠宝首饰&#xff0c;包括但不限于脚链、手链、耳环、项链、戒指、珠宝首饰制作或维修套装以及钟表。 亚马逊儿童珠宝首饰政策 亚马逊要求所有儿童珠宝首饰均经过检测并符合下列法规、标准…...

vty、带内/带外管理、带内/带外ip简介

1、vty是什么&#xff1f; (virtual teletype)虚拟电传打字机 漫谈VTY (qq.com) 视频链接&#xff1a;使用20世纪30年代的电传打字机作为Linux系统的终端 https://hackaday.com/2020/04/15/logging-into-linux-with-a-1930s-teletype/ 2、console端口和vty端口的区别&#xf…...

嵌入式开发九:STM32时钟系统

时钟对于单片机来说是非常重要的&#xff0c;它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行。时钟系统犹如人的心脏&#xff0c;一旦有问题整个系统就崩溃。我们知道 STM32 属于高级单片机&#xff0c;其内部有很多的外设&#xff0c;但不是所有外设都使用同一时…...

【ytb数据采集器】按关键词批量爬取视频数据,界面软件更适合文科生!

一、背景介绍 1.1 爬取目标 用Python独立开发的爬虫工具&#xff0c;作用是&#xff1a;通过搜索关键词采集油管的搜索结果&#xff0c;包含14个关键字段&#xff1a;关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评论数…...

CMakeLists.txt语法规则:数学运算 math

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一些常用变量&#xff0c;常用命令&#xff0c;双引号的作用。条件判断语句&#xff0c;循环语句等等。 本文简单学习一下 CMakeLists.txt语法中数学运算 match。 二. CMakeLists.txt语法规则&#xff1a;数学运算 math 在…...

生成式AI+跨境电商有哪些新玩法?店匠科技与亚马逊云科技已经在路上

导读 跨境电商一直是生成式AI最热门的应用领域之一。 生成式AI在跨境电商行业的核心应用场景有哪些&#xff1f;AI跨境电商又有哪些新玩法&#xff1f; 根据海关数据&#xff0c;2023年我国跨境电商进出口总额达2.38万亿元&#xff0c;增长15.6%。我国跨境电商主体已超10万家…...

【MySQL】5.MySQL的高级特性:存储过程、函数与触发器的解析与应用

不管是在Web开发或是其他和数据相关的领域&#xff0c;MySQL都以其强大的功能和灵活性&#xff0c;成为了众多开发者和数据库管理员的首选。MySQL 提供的存储过程、函数和触发器是实现复杂业务逻辑、数据完整性和自动化维护任务的关键工具。这些工具不仅提高了数据操作的效率&a…...

windows轻松管理nodejs 版本 升/降级 卸载等等

#nvm-windows 管理nodejs 版本神器# 不经意升级了node版本导致原有项目启动异常, 看到了node版本管理神器:nvm-windos 1,先下载 nvm >> git 选择如下安装包或 nvm-setup.exe文件 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 2. 双击安装,下一…...

优化loader性能

优化loader性能 {ignore} 进一步限制loader的应用范围 思路是&#xff1a;对于某些库&#xff0c;不使用loader 例如&#xff1a;babel-loader可以转换ES6或更高版本的语法&#xff0c;可是有些库本身就是用ES5语法书写的&#xff0c;不需要转换&#xff0c;使用babel-loade…...

HTML中插入图片(2024/5/10)

背景&#xff1a; 自己做了个小网站&#xff0c;想在网页的右下角贴上自己的微信二维码&#xff0c;用以下代码就可以了。 注意&#xff0c;这里是放右下角了&#xff0c;距离和二维码的图片大小需要自己去调整。 /*二维码的名字和路径需要自己修改*/ <!DOCTYPE html>…...

Python中如何读取文件夹及其文件:使用os模块详解

路径os Python中如何读取文件夹及其文件&#xff1a;使用os模块详解引入os模块读取文件夹获取当前工作目录更改工作目录列出目录内容 读取文件夹下的文件检查是文件还是目录使用os.path.join()**重点内容**&#xff1a;**使用os模块来读取和管理文件及目录&#xff0c;特别是os…...