1.利用opencv打开摄像头
import cv2
# 1.打开摄像头,读取摄像头拍摄到的角度
vedio_capter = cv2.VideoCapture(0)
# 2.循环不停的获取摄像头的画面,并做进一步的处理
while True:
# 2.1获取摄像头拍摄到的画面,并做进一步的处理
ret, frame = vedio_capter.read() # ret是指是否返回画面true和false,frame是指读取到的视频的帧
# 2.2 通过opencv把拍摄到的画面展示出来
cv2.imshow('Vedio', frame)
# 2.3 按q退出while循环,即退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capter.realease()
2.调用摄像头实现人脸识别
import os
import cv2
import face_recognition
'''
#人脸数据库
face_databases_dir = 'face_databases'
user_names = [] #存放用户姓名
user_faces_encodings = [] #存放用户脸部特征向量(一一对应)
files = os.listdir('face_databases')
for file_name in files:
'''
# 1.打开摄像头,读取摄像头拍摄到的角度
vedio_capter = cv2.VideoCapture(0)
# 2.循环不停的获取摄像头的画面,并做进一步的处理
while True:
# 2.1获取摄像头拍摄到的画面,并做进一步的处理
ret, frame = vedio_capter.read() # ret是指是否返回画面true和false,
# 2.2从拍摄到的画面提取出人的脸部所在的区域
face_locations = face_recognition.face_locations(frame)
# 2.3 循环比那里人的脸部所在的区域并画框
for top, right, bottom, left in face_locations:
cv2.rectangle(frame, (left, top), (right, bottom), (0,255,0), 2)
# 2.4 通过opencv把拍摄到的并花了框的画面展示出来
cv2.imshow('Vedio', frame)
# 2.5 按q退出while循环,即退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video_capter.realease()
运行结果:
图像识别位置信息
face_locations是一个列表,存储了图像的位置坐标信息:
图像位置:
返回坐标为:左上角坐标
和右下角坐标
函数讲解
按键函数——cv2.waitkey()
cv2.waitkey(delay)
- 功能:等待键盘'key'键的输入
- 参数:
delay
表示延时多少秒切换到下一帧图像 - 返回值:键盘输入的字符串对应的
ASCII码
代码示例:
cv2.waitKey(1) == ord(‘Key’)
- 表示延时1ms切换到下一帧图像,对于视频而言
0:只显示当前帧图像,相当于视频暂停
key:要输入键盘的键
waitKey()–这个函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环)
1.2 如下所示: while(1){ if(waitKey(100)==27)break; } 在这个程序中,我们告诉OpenCv等待用户触发事件,等待时间为100ms,如果在这个时间段内, 用户按下ESC(ASCII码为27),则跳出循环,否则,则继续循环
1.3 如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件
视频流获取——cv2.VideoCapture().read()
ret, frame = cv2.VideoCapture(0).read()
- 功能:读取一帧的图片。
- 参数:
vedio
对应的编号,一般都是0 - 返回值
ret
:bool值
True:读取到图片;
False:没有读取到图片。 - 返回值
frame
:当前帧的图片。
代码示例:
vedio_capter = cv2.VideoCapture(0)
ret, frame = vedio_capter.read()
ret
:是指这一帧是否有接收到画面frame
:这一帧的图片
参考文章: