人脸微笑识别和口罩识别模型训练和测试(卷积神经网络CNN)及实时的微笑和口罩识别
目录
- 一、人脸微笑识别
- 1.准备工作
- 2.genki4k笑脸数据集准备
- 导入需要的包
- 划分数据集
- 3.网络模型
- 4.数据预处理
- 5.开始训练
- 6.数据增强
- 7.创建新的网络
- 8.对单张图片的笑脸测试
- 二、口罩识别
- 1.数据准备
- 2.网络模型
- 3.数据预处理
- 4.开始训练
- 5.使用数据增强
- 6.对单张人物测试是否戴了口罩
- 三、摄像头实时采集人脸、并对表情(笑脸/非笑脸)、戴口罩和没戴口罩的实时分类判读(输出分类文字)
- 1.笑脸实时检测识别
- 2.是否戴口罩的实时检测识别
一、人脸微笑识别
1.准备工作
需要安装tensorflow、keras以及dlib。
2.genki4k笑脸数据集准备
下载图像数据集genki4k.tar,把它解压到相应的目录(我的目录是在jupyter工作目录下的GENKI4K-datasets目录下)
可以看到里面有些许不合格的数据,我们需要将其剔除。
导入需要的包
import keras #导入人工神经网络库
import matplotlib.pyplot as plt # matplotlib进行画图
import matplotlib.image as mpimg # # mpimg 用于读取图片
import numpy as np # numpy操作数组
from IPython.display import Image #显示图像
import os #os:操作系统接口
划分数据集
(在GENKI4K-dataset同级目录下会产生一个GENKI4K-data的文件夹,包括 train :训练集;validation:验证集;test:测试集。)
# 原目录的路径
original_dataset_dir = 'GENKI4K-datasets'# 结果路径,存储较小的数据集
base_dir = 'GENKI4K-data'
os.mkdir(base_dir)# 训练目录,验证和测试拆分
train_dir = os.path.join(base_dir, 'train')
os.mkdir(train_dir)
validation_dir = os.path.join(base_dir, 'validation')
os.mkdir(validation_dir)
test_dir = os.path.join(base_dir, 'test')
os.mkdir(test_dir)# 训练微笑图片目录
train_smile_dir = os.path.join(train_dir, 'smile')
os.mkdir(train_smile_dir)# 训练没微笑图片目录
train_unsmile_dir = os.path.join(train_dir, 'unsmile')
#s.mkdir(train_dogs_dir)# 验证的微笑图片目录
validation_smile_dir = os.path.join(validation_dir, 'smile')
os.mkdir(validation_smile_dir)# 验证的没微笑图片目录
validation_unsmile_dir = os.path.join(validation_dir, 'unsmile')
os.mkdir(validation_unsmile_dir)# 测试的微笑图片目录
test_smile_dir = os.path.join(test_dir, 'smile')
os.mkdir(test_smile_dir)# 测试的没微笑图片目录
test_unsmile_dir = os.path.join(test_dir, 'unsmile')
os.mkdir(test_unsmile_dir)
分配数据集,可以使用人为划分和代码划分
进行一次检查,计算每个分组中有多少张照片(训练/验证/测试)
print('total training smile images:', len(os.listdir(train_smile_dir)))
print('total training unsmile images:', len(os.listdir(train_umsmile_dir)))
print('total testing smile images:', len(os.listdir(test_smile_dir)))
print('total testing unsmile images:', len(os.listdir(test_umsmile_dir)))
print('total validation smile images:', len(os.listdir(validation_smile_dir)))
print('total validation unsmile images:', len(os.listdir(validation_unsmile_dir)))
有2400个训练图像,然后是600个验证图像,1200个测试图像,其中每个分类都有相同数量的样本,是一个平衡的二元分类问题,意味着分类准确度将是合适的度量标准。
3.网络模型
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.summary()
在编译步骤里,使用RMSprop优化器。由于用一个单一的神经元(Sigmoid的激活函数)结束了网络,将使用二进制交叉熵(binary crossentropy)作为损失函数
from keras import optimizers
model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])
4.数据预处理
from keras.preprocessing.image import ImageDataGenerator
# 所有的图像将重新进行归一化处理 Rescaled by 1./255
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen=ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
# 直接从目录读取图像数据
train_generator = train_datagen.flow_from_directory(# 训练图像的目录train_dir,# 所有图像大小会被转换成150x150target_size=(150, 150),# 每次产生20个图像的批次batch_size=20,# 由于这是一个二元分类问题,y的label值也会被转换成二元的标签class_mode='binary')
# 直接从目录读取图像数据
validation_generator = test_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=20,class_mode='binary')
test_generator = test_datagen.flow_from_directory(test_dir,target_size=(150, 150),batch_size=20,class_mode='binary')
for data_batch, labels_batch in train_generator:print('data batch shape:', data_batch.shape)print('labels batch shape:', labels_batch)break
输出结果的0(笑脸)和1(非笑脸)
train_generator.class_indices
5.开始训练
epochs值为训练轮数
history = model.fit_generator(train_generator,steps_per_epoch=120,epochs=10,validation_data=validation_generator,validation_steps=50)
训练集中共有1200张,选择10轮训练,每轮120张
训练完后将模型保存下来
model.save('GENKI4K-data/smileAndUnsmile_1.h5')
使用图表来绘制在训练过程中模型对训练和验证数据的损失(loss)和准确性(accuracy)数据
6.数据增强
datagen = ImageDataGenerator(rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')
查看增强后的图片例子
import matplotlib.pyplot as plt
# 图像预处理功能模块
from keras.preprocessing import image
# 取得训练数据集中微笑的图片列表
fnames = [os.path.join(train_smile_dir, fname) for fname in os.listdir(train_smile_dir)]
img_path = fnames[3] # 取一个图像
img = image.load_img(img_path, target_size=(150, 150)) # 读入图像并进行大小处理
x = image.img_to_array(img) # 转换成Numpy array 并且shape(150,150,3)
x = x.reshape((1,) + x.shape) # 重新Reshape成(1,150,150,3)以便输入到模型中
# 通过flow()方法将会随机产生新的图像,它会无线循环,所以我们需要在某个时候“断开”循环
i = 0
for batch in datagen.flow(x, batch_size=1):plt.figure(i)imgplot = plt.imshow(image.array_to_img(batch[0]))i += 1if i % 4 == 0:break
plt.show()
7.创建新的网络
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])
开始训练模型
#归一化处理
train_datagen = ImageDataGenerator(rescale=1./255,rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,)# 注意,验证数据不应该扩充
test_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory(# 这是图像资料的目录train_dir,# 所有的图像大小会被转换成150x150target_size=(150, 150),batch_size=32,# 由于这是一个二元分类问题,y的label值也会被转换成二元的标签class_mode='binary')validation_generator = test_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=32,class_mode='binary')history = model.fit_generator(train_generator,steps_per_epoch=100,epochs=60, validation_data=validation_generator,validation_steps=50)
训练完成后查看结果
train_generator.class_indices
依旧是:0为笑脸 1为非笑脸
保存模型
model.save('GENKI4K-data/smileAndUnsmile_2.h5')
数据增强后的训练集与验证集的精确度与损失度
acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']epochs = range(len(acc))plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.legend()plt.figure()plt.plot(epochs, loss, 'bo', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.legend()plt.show()
我们发现验证的loss值有所下降,并且和训练集的loss值(较高)差距较大,同时验证集的精确度也在增加,所以数据增强后还是有效果的。
8.对单张图片的笑脸测试
# 单张图片进行判断 是笑脸还是非笑脸
from keras.preprocessing import image
from keras.models import load_model
import numpy as np
#加载模型
model = load_model('GENKI4K-data/smileAndUnsmile_2.h5')
#本地图片路径
img_path='GENKI4K-data/stest.jpg'
img = image.load_img(img_path, target_size=(150, 150))img_tensor = image.img_to_array(img)/255.0
img_tensor = np.expand_dims(img_tensor, axis=0)
prediction =model.predict(img_tensor)
print(prediction)
if prediction[0][0]>0.5:result='非笑脸'
else:result='笑脸'
print(result)
stest.jpg为下图
结果:
再来测试一张非笑脸
# 单张图片进行判断 是笑脸还是非笑脸
from keras.preprocessing import image
from keras.models import load_model
import numpy as np
#加载模型
model = load_model('GENKI4K-data/smileAndUnsmile_2.h5')
#本地图片路径
img_path='GENKI4K-data/ustest.jpg'
img = image.load_img(img_path, target_size=(150, 150))img_tensor = image.img_to_array(img)/255.0
img_tensor = np.expand_dims(img_tensor, axis=0)
prediction =model.predict(img_tensor)
print(prediction)
if prediction[0][0]>0.5:result='非笑脸'
else:result='笑脸'
print(result)
ustest.jpg为下图
结果:
看来训练的模型还是比较准确的,但是我也拿了一样笑脸特征不是很明显的测试了一下,显示为笑脸,所以还是存在偏差的。
二、口罩识别
1.数据准备
下载好口罩数据集后我放到了jupyter工作目录下新建的maskdata里
简单看一下mask和nomask
——将正样本(有口罩)数据集重命名为连续序列,以便后面调整
#coding:utf-8
import os
path = "maskdata/mask" # 人脸口罩数据集正样本的路径
filelist = os.listdir(path)
count=1000 #开始文件名1000.jpg
for file in filelist: Olddir=os.path.join(path,file) if os.path.isdir(Olddir): continuefilename=os.path.splitext(file)[0] filetype=os.path.splitext(file)[1]Newdir=os.path.join(path,str(count)+filetype) os.rename(Olddir,Newdir)count+=1
——同样对负样本也要处理
#coding:utf-8
import os
path = "maskdata/nomask" # 人脸口罩数据集负样本的路径
filelist = os.listdir(path)
count=10000 #开始文件名10000.jpg
for file in filelist: Olddir=os.path.join(path,file) if os.path.isdir(Olddir): continuefilename=os.path.splitext(file)[0] filetype=os.path.splitext(file)[1]Newdir=os.path.join(path,str(count)+filetype) os.rename(Olddir,Newdir)count+=1
——正负样本数据集像素处理
①处理正样本
import pandas as pd
import cv2
for n in range(1000,1606):#代表正数据集中开始和结束照片的数字path='maskdata//mask//'+str(n)+'.jpg'# 读取图片img = cv2.imread(path)img=cv2.resize(img,(20,20)) #修改样本像素为20x20cv2.imwrite('maskdata//mask//' + str(n) + '.jpg', img)n += 1
处理后的
②处理负样本
#修改负样本像素
import pandas as pd
import cv2
for n in range(10000,11790):#代表负样本数据集中开始和结束照片的数字path='maskdata//nomask//'+str(n)+'.jpg'# 读取图片img = cv2.imread(path)img=cv2.resize(img,(80,80)) #修改样本像素为80x80cv2.imwrite('maskdata//nomask//' + str(n) + '.jpg', img)n += 1
处理后的
——划分数据集(在同级目录下会产生一个mask的文件夹,包括 train :训练集;validation:验证集;test:测试集。)
original_dataset_dir = 'maskdata' # 原始数据集的路径base_dir = 'maskout' # 存放图像数据集的目录
os.mkdir(base_dir)train_dir = os.path.join(base_dir, 'train') # 训练图像的目录
os.mkdir(train_dir)
validation_dir = os.path.join(base_dir, 'validation') # 验证图像的目录
os.mkdir(validation_dir)
test_dir = os.path.join(base_dir, 'test') # 测试图像的目录
os.mkdir(test_dir)train_havemask_dir = os.path.join(train_dir, 'mask') # 有口罩的图片的训练资料的目录
os.mkdir(train_havemask_dir)train_nomask_dir = os.path.join(train_dir, 'nomask') # 没有口罩的图片的训练资料的目录
os.mkdir(train_nomask_dir)validation_havemask_dir = os.path.join(validation_dir, 'mask') # 有口罩的图片的验证集目录
os.mkdir(validation_havemask_dir)validation_nomask_dir = os.path.join(validation_dir, 'nomask')# 没有口罩的图片的验证集目录
os.mkdir(validation_nomask_dir)test_havemask_dir = os.path.join(test_dir, 'mask') # 有口罩的图片的测试数据集目录
os.mkdir(test_havemask_dir)test_nomask_dir = os.path.join(test_dir, 'nomask') # 没有口罩的图片的测试数据集目录
os.mkdir(test_nomask_dir)
print('total training havemask images:', len(os.listdir(train_havemask_dir)))
print('total testing havemask images:', len(os.listdir(test_havemask_dir)))
print('total validation havemask images:', len(os.listdir(validation_havemask_dir)))
print('total training nomask images:', len(os.listdir(train_nomask_dir)))
print('total testing nomask images:', len(os.listdir(test_nomask_dir)))
print('total validation nomask images:', len(os.listdir(validation_nomask_dir)))
一共有600个训练图像,然后是300个验证图像,300个测试图像,其中每个分类都有相同数量的样本,是一个平衡的二元分类问题,意味着分类准确度将是合适的度量标准。
2.网络模型
#创建模型
from keras import layers
from keras import modelsmodel = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
——看特征图的尺寸如何随着每个连续的图层而改变,打印网络结构
在编译步骤里,使用RMSprop优化器。由于用一个单一的神经元(Sigmoid的激活函数)结束了网络,将使用二进制交叉熵(binary crossentropy)作为损失函数
from keras import optimizersmodel.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])
3.数据预处理
from keras.preprocessing.image import ImageDataGenerator
# 所有的图像将重新进行归一化处理 Rescaled by 1./255
train_datagen = ImageDataGenerator(rescale=1./255)
validation_datagen=ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
# 直接从目录读取图像数据
train_generator = train_datagen.flow_from_directory(# 训练图像的目录train_dir,# 所有图像大小会被转换成150x150target_size=(150, 150),# 每次产生20个图像的批次batch_size=20,# 由于这是一个二元分类问题,y的label值也会被转换成二元的标签class_mode='binary')
# 直接从目录读取图像数据
validation_generator = test_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=20,class_mode='binary')
test_generator = test_datagen.flow_from_directory(test_dir,target_size=(150, 150),batch_size=20,class_mode='binary')
——图像张量生成器(generator)的输出,它产生150x150 RGB图像(形状"(20,150,150,3)")和二进制标签(形状"(20,)")的批次张量。20是每个批次中的样品数(批次大小)
for data_batch, labels_batch in train_generator:print('data batch shape:', data_batch.shape)print('labels batch shape:', labels_batch)break
4.开始训练
history = model.fit_generator(train_generator,steps_per_epoch=100,epochs=10,validation_data=validation_generator,validation_steps=50)
可以看出随着训练轮数的增加,训练集的loss值下降,acc精确度上升,但验证集就完全相反,这也是非常符合实际的。
——保存模型
model.save('maskout/maskAndNomask_1.h5')
——使用图表来绘制在训练过程中模型对训练和验证数据的损失(loss)和准确性(accuracy)数据
import matplotlib.pyplot as plt
# import h5pyacc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']epochs = range(len(acc))
# print('acc:',acc)
# print('val_acc:',val_acc)
# print('loss:',loss)
# print('val_loss:',val_loss)
plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.legend()plt.figure()plt.plot(epochs, loss, 'bo', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.legend()plt.show()
5.使用数据增强
datagen = ImageDataGenerator(rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')
查看数据增强后的图片
import matplotlib.pyplot as plt
from keras.preprocessing import image
fnames = [os.path.join(train_havemask_dir, fname) for fname in os.listdir(train_havemask_dir)]
img_path = fnames[3]
img = image.load_img(img_path, target_size=(150, 150))
x = image.img_to_array(img)
x = x.reshape((1,) + x.shape)
i = 0
for batch in datagen.flow(x, batch_size=1):plt.figure(i)imgplot = plt.imshow(image.array_to_img(batch[0]))i += 1if i % 4 == 0:break
plt.show()
——对数据增强后的数据集加上dropout进行训练
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(lr=1e-4),metrics=['acc'])
#归一化处理
train_datagen = ImageDataGenerator(rescale=1./255,rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,)# Note that the validation data should not be augmented!
test_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory(# This is the target directorytrain_dir,# All images will be resized to 150x150target_size=(150, 150),batch_size=32,# Since we use binary_crossentropy loss, we need binary labelsclass_mode='binary')validation_generator = test_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=32,class_mode='binary')history = model.fit_generator(train_generator,steps_per_epoch=100,epochs=60, validation_data=validation_generator,validation_steps=50)
查看结果
train_generator.class_indices
0:口罩 ,1:无口罩
——保存模型
#保存模型
model.save('maskout/maskAndNomask_2.h5')
绘制数据增强后的训练集与验证集的精确度与损失度的图形,看一遍结果
acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']epochs = range(len(acc))plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.legend()plt.figure()plt.plot(epochs, loss, 'bo', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.legend()plt.show()
我们可以发现加了dropout后精确度上升,loss下降
6.对单张人物测试是否戴了口罩
from keras.preprocessing import image
from keras.models import load_model
import numpy as npmodel = load_model('maskout//maskAndNomask_2.h5')img_path='maskout//masktest.jpg'img = image.load_img(img_path, target_size=(150, 150))
#print(img.size)
img_tensor = image.img_to_array(img)/255.0
img_tensor = np.expand_dims(img_tensor, axis=0)
prediction =model.predict(img_tensor)
print(prediction)
if prediction[0][0]>0.5:result='未戴口罩'
else:result='戴口罩'
print(result)
masktest.jpg如下:
再来测试一下不戴口罩的 识别
from keras.preprocessing import image
from keras.models import load_model
import numpy as npmodel = load_model('maskout//maskAndNomask_2.h5')img_path='maskout//nomasktest.jpg'img = image.load_img(img_path, target_size=(150, 150))
#print(img.size)
img_tensor = image.img_to_array(img)/255.0
img_tensor = np.expand_dims(img_tensor, axis=0)
prediction =model.predict(img_tensor)
print(prediction)
if prediction[0][0]>0.5:result='未戴口罩'
else:result='戴口罩'
print(result)
nomasktest.jpg如下:
三、摄像头实时采集人脸、并对表情(笑脸/非笑脸)、戴口罩和没戴口罩的实时分类判读(输出分类文字)
1.笑脸实时检测识别
#检测视频或者摄像头中的人脸
import cv2
from keras.preprocessing import image
from keras.models import load_model
import numpy as np
import dlib
from PIL import Image
model = load_model('GENKI4K-data/smileAndUnsmile_2.h5')
detector = dlib.get_frontal_face_detector()
video=cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
def rec(img):gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)dets=detector(gray,1)if dets is not None:for face in dets:left=face.left()top=face.top()right=face.right()bottom=face.bottom()cv2.rectangle(img,(left,top),(right,bottom),(0,255,0),2)img1=cv2.resize(img[top:bottom,left:right],dsize=(150,150))img1=cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)img1 = np.array(img1)/255.img_tensor = img1.reshape(-1,150,150,3)prediction =model.predict(img_tensor) if prediction[0][0]>0.5:result='unsmile'else:result='smile'cv2.putText(img, result, (left,top), font, 2, (0, 255, 0), 2, cv2.LINE_AA)cv2.imshow('Video', img)
while video.isOpened():res, img_rd = video.read()if not res:breakrec(img_rd)if cv2.waitKey(1) & 0xFF == ord('q'):break
video.release()
cv2.destroyAllWindows()
由于博主不爱笑,所以这里检测为unsmile(嘻嘻🤭)
2.是否戴口罩的实时检测识别
import cv2
from keras.preprocessing import image
from keras.models import load_model
import numpy as np
import dlib
from PIL import Image
model = load_model('maskout/maskAndNomask_2.h5')
detector = dlib.get_frontal_face_detector()
# video=cv2.VideoCapture('media/video.mp4')
# video=cv2.VideoCapture('data/face_recognition.mp4')
video=cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_SIMPLEX
def rec(img):gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)dets=detector(gray,1)if dets is not None:for face in dets:left=face.left()top=face.top()right=face.right()bottom=face.bottom()cv2.rectangle(img,(left,top),(right,bottom),(0,255,255),2)
def mask(img):img1=cv2.resize(img,dsize=(150,150))img1=cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)img1 = np.array(img1)/255.img_tensor = img1.reshape(-1,150,150,3)prediction =model.predict(img_tensor) if prediction[0][0]>0.5:result='no-mask'else:result='have-mask'cv2.putText(img, result, (100,200), font, 2, (255, 255, 100), 2, cv2.LINE_AA)cv2.imshow('Video', img)
while video.isOpened():res, img_rd = video.read()if not res:break#将视频每一帧传入两个函数,分别用于圈出人脸与判断是否带口罩rec(img_rd)mask(img_rd)#q关闭窗口if cv2.waitKey(1) & 0xFF == ord('q'):break
video.release()
cv2.destroyAllWindows()
本次人脸表情识别和口罩识别利用卷积神经网路(CNN),博主本人也当了此次实验的实验对象,感觉能将自己和实验融合起来还挺有意思的。作为一个greenbird,欢迎大家来访和交流。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- iOS开发者账号同意协议 绕开密码问题验证
最新大家可能发现,自己的开发者账号上面多了一个红框,让开发者同意更新的用户协议,这个协议是苹果那边更新了开发者协议,目的是为了让开发者在账号上添加手机号作为联系方式.C376FDDB-F7B4-467C-A5CE-027D63FCF122.png本来一个简单的更新操作,但是我们公司的账号在操作时确遇到…...
2024/4/1 1:50:22 - 3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案
前提最近线上的项目使用了 spring-actuator 做度量统计收集,使用 Prometheus 进行数据收集, Grafana 进行数据展示,用于监控生成环境机器的性能指标和业务数据指标。一般,我们叫这样的操作为"埋点"。 SpringBoot 中的依赖 spring-actuator 中集成的度量统计API使…...
2024/4/16 7:55:14 - 绝对估值法和相对估值法
绝对估值法金融市场在估算企业价值的时候,常常用现金流贴现法。也就是Discounted Cash Flow(DCF)。该方法把企业未来折现的现金流加起来,计算企业的内在价值。自由现金流:一个企业的经营活动,扣除所有开支后,可以自由支配的钱股东盈余:一个公司未来可以帮股东赚到的净利…...
2024/4/19 20:13:32 - 阿里三面试题:为什么抽象类无法实例化,但是可以new出来实例?
背景,二面阿里过关,三面的时候面试官问了我很多难题,挑选一个作详细解析。大致的经过是这样的:他问的:“为什么抽象类无法实例化,但是可以new出来一个实例,官方这么说是什么意思?而且去了各类论坛,回答的都是比较含糊其辞,切不到重点。说什么是面向对象设计的规范balab…...
2024/4/16 7:54:38 - 深入理解Spring Boot数据源与连接池原理
【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖。其中数据源核心依赖就是spring‐bo…...
2024/4/19 18:13:53 - jQuery学习笔记——事件添加的特性以及方法
jQuery绑定事件的一些特性同一元素相同的后续事件不会覆盖前面的事件事件绑定与解绑 同一元素相同的后续事件不会覆盖前面的事件//原生js中,相同元素注册相同的事件,后续的事件会把前面的事件覆盖掉document.getElementById(box).onclick = function(){console.log(js事件1)}do…...
2024/4/16 7:54:23 - 【Yii2】高级模板跨应用调用组件的最佳解决方案
项目需求 在Yii2的高级模板中,可以创建多个应用。 目前有两个应用 网站 管理后台 其中网站使用pageCache作为缓存组件。 由于使用缓存组件,导致后台的内容没有及时更新,所以,需要在后台创建模块,手动刷新网站的缓存。 思路 使用网站配置文件在后台注册组件 也就是说,在缓…...
2024/4/19 13:47:47 - 淘宝开店怎么做运营?
为了增加商品的流量和销量,一些商家不得不发放一些优惠券来吸引消费者的目光,一些优惠券是直接通过店铺发放,还有一些是隐藏发放的,那么消费者知道淘宝隐藏优惠券在哪里领吗?卖家怎么设置优惠券呢? 淘宝隐藏优惠券在哪里领?卖家怎么设置? 一、淘宝隐藏优惠券在哪里领 一…...
2024/5/4 16:01:04 - 某段代码执行多久
long t1 = System.currentTimeMillis();List<GoodsSelectDTO> goodsSelectDTOList = goodsService.getGoodsSelectUtilnbsp(companyId);System.out.println("queryTime=" + (System.currentTimeMillis() - t1));...
2024/4/16 7:53:42 - 在Ubuntu导入Tesorflow出错问题
文章目录 1.ImportError: libcusolver.so.10.0: cannot open shared object file: No such file… 分析:可能是cudnn未安装 执行命令查看cudnn是否安装 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2若有结果输出则表示cudnn已安装的,若没有结果,则需要进行…...
2024/4/16 7:54:33 - Python 输出HTML实体字符(***转html)
#!/usr/bin/env python # encoding: utf-8 """ 出 关① 徐兰 凭山俯海古边州, 旆②影风翻见戍楼。 马后桃花马前雪,出关争得不回头? [注]①关,指居庸关。②旆(pi),旌旗。 """ import html string = [注]①关,指居庸关。&…...
2024/4/16 7:54:28 - C语言练习题1:英文字母大小写转换
输入一行字符,判断其是否为英文字母,若是英文字母,则进行大小写转换,若不是英文字母,则不变。 #include <stdio.h>int main(){int i;char s[100];gets(s);for(i=0;s[i]!=0;i++)if(s[i]>=a&&s[i]<=z)s[i]=s[i]-32;else if(s[i]>=A&&s[i]<…...
2024/4/16 7:53:42 - 轻量级实时语义分割经典BiSeNet
基于轻量化网络模型的设计作为一个热门的研究方法,许多研究者都在运算量、参数量和精度之间寻找平衡,希望使用尽量少的运算量和参数量的同时获得较高的模型精度。目前,轻量级模型主要有SqueezeNet、MobileNet系列和ShuffleNet系列等,这些模型在图像分类领域取得了不错的效果…...
2024/4/28 19:26:22 - 连接docker容器中出现ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
问题复现 ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) 很久没有登陆我的这个数据库容器,连不上。 开始百度方法,说改配置文件,但是很遗憾,我创建容器的时候没有挂在配置文件。 解决记录 大前提:我是docker容器中的mysql 错…...
2024/4/16 7:54:33 - [Codeforces Round #649 (Div. 2)]1364
文章目录A - XXXXX [思维]B - Sign Flipping [思维]C - Ehab and Prefix MEXs [构造][并查集]D - Ehabs Last Corollary [dfs环长度]比赛首页 标准题解 A - XXXXX [思维] 目录 题目传送门 题意 有 nnn 个数的数组 a[]a[]a[],要使数组的总和%k!=0\% k != 0%k!=0 可以选择删去开…...
2024/4/17 22:03:49 - AQS基本原理
什么是AQS? AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。 AQS支持独占锁(e…...
2024/5/2 20:15:38 - 算术表达式运算栈实现-数据结构-golang
算术表达式运算栈实现-数据结构-golang package mainimport ("fmt""log""strconv" )//运算符stack type opStack []string//操作数stack type dataStack []int//操作符的优先级标识 type priority map[string]map[string]intvar p = make(priori…...
2024/4/16 7:54:43 - React-Native 二、登录注册模块开发
前段时间公司项目比较赶, 没时间写文章, 这两天闲下来了, 总结了一下, 写了一篇比较综合的UI项目, 登录注册模块, 包含UI 网络请求等功能, 希望对大家理解React Native的界面布局和网络请求有一定的帮助.项目可到github下载: https://github.com/YTiOSer/YTReact-Native_LoginU…...
2024/4/16 7:54:28 - 黑盒测试、白盒测试的定义
白盒测试 是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 黑盒测试 是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软…...
2024/4/19 1:28:58 - Python中如何使用类
(因为入职之后除了学术研究之外,还要做一些工程的事情,所以小刘同学以后还要学习一些python面向对象的用法,今天就先学习一下类是怎么继承的,这也算是个学习记录帖子)Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象…...
2024/4/26 13:58:23
最新文章
- 办公数据分析利器:Excel与Power Query透视功能
数据分析利器:Excel与Power Query透视功能 Excel透视表和Power Query透视功能是强大的数据分析工具,它们使用户能够从大量数据中提取有意义的信息和趋势,可用于汇总、分析和可视化大量数据。 本文通过示例演示Power Query透视功能的一个小技…...
2024/5/4 17:02:53 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 医院内外网安全通讯:实现安全与便捷的跨网即时通讯
医院作为医疗信息化程度较高的机构之一,内部数据传输频繁,网络安全问题备受关注。医院内外网隔离是确保医院网络安全性和保密性的关键措施。然而,医院在业务开展中经常需要进行内外网数据交换,比如患者数据传输至内网,…...
2024/5/3 2:23:09 - 供应链攻击揭秘:识别、防范与应对
供应链攻击是网络安全领域的一种新兴威胁,它利用供应链中的漏洞对目标进行攻击。本文将介绍供应链攻击的概念、类型、危害,并通过具体案例阐述其影响,同时探讨如何防范供应链攻击,以提高人们对供应链攻击的认识和防范意识。 一、引…...
2024/5/2 13:00:23 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57