opencv练习面部识别,缺少视频文件,爬取视频又没成功,就想通过截屏保存图像的方式保存使用。
屏幕像素大小,需要通过别的模块,练手就直接使用自己屏幕的了,如果想根据屏幕像素不同变动的,可以再添加。
另外既然截屏,就可以直接在图像读取后直接面部识别,节省一步保存转换的步骤。
import uuid,socket,time
import pyautogui
import cv2
import numpy as np
import pyttsx3 #语音播放
#获取电脑设备号
def get_mac():
#mac
mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
# 获取主机名
hostname = socket.gethostname()
# 获取IP
ip = socket.gethostbyname(hostname)
# 结果数据导出
pc_mac = {‘mac’:mac,‘hostname’:hostname,‘ip’:ip}
return pc_mac
时间计算
def get_current_time():
ct = time.time()
local_time = time.localtime(ct)
data_head = time.strftime(“%Y%m%d%H%M%S”, local_time)
data_secs = abs(ct - round(ct)) * 1000
time_stamp = “%s%03d” % (data_head, data_secs)
return time_stamp
def pyttsx_yybf(text):
engine = pyttsx3.init()
engine.setProperty(‘rate’, 160) #语音速度
engine.say(text) #朗读内容
engine.runAndWait()
def get_win_gui(mac,in_time,output):
# 分别代表:左上角坐标,宽高
img = pyautogui.screenshot(region=[0,0,1366,768])
# 对获取的图片转换成二维矩阵形式,后再将RGB转成BGR
# 因为imshow,默认通道顺序是BGR,而pyautogui默认是RGB所以要转换一下,不然会有点问题
img_cv = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
#cv2.imwrite(‘./image/win_gui/’+mac+‘_’+in_time+‘.jpeg’ , img_cv)
output.write(img_cv)
if name == ‘main’:
pyttsx_yybf('倒数开始截屏')
for i in range(10):
pyttsx_yybf('%d 秒' % (10-i))
time.sleep(0.5)
pyttsx_yybf('截屏开始')
# 获取系统数据
mac_id = get_mac()
# 展现数据
print('计算机参数展示', mac_id)
# 获取内容
mac, hostname, ip = mac_id['mac'], mac_id['hostname'], mac_id['ip']
#录屏准备
fourcc = cv2.VideoWriter_fourcc('X','V','I','D')
fps = 10
output = cv2.VideoWriter('jieping.avi',fourcc,fps,(1366,768))
frame_num = 60 * fps
# 循环执行
while True and frame_num > 0:
in_time = get_current_time()
#print('in_time',in_time)
get_win_gui(mac,in_time,output)
frame_num -= 1
time.sleep(0.0005)
pyttsx_yybf('截屏结束')