Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zpc421126
face_recognition
提交
86d9ab67
F
face_recognition
项目概览
zpc421126
/
face_recognition
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
face_recognition
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
86d9ab67
编写于
8月 06, 2018
作者:
Y
YumiLee
提交者:
Adam Geitgey
4月 15, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add facerec_from_webcam_much_faster.py
上级
23d2d656
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
118 addition
and
0 deletion
+118
-0
examples/facerec_from_webcam_much_faster.py
examples/facerec_from_webcam_much_faster.py
+118
-0
未找到文件。
examples/facerec_from_webcam_much_faster.py
0 → 100644
浏览文件 @
86d9ab67
import
face_recognition
import
cv2
import
threading
import
time
# This is a demo of running face recognition on live video from your webcam. It's a little more complicated than the
# other example, but it includes some basic performance tweaks to make things run a lot faster:
# 1. Process each video frame at 1/4 resolution (though still display it at full resolution)
# 2. Only detect faces in every other frame of video.
# 3. Use a thread to capture frames, which can improve delay.
# PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam.
# OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this
# specific demo. If you have trouble installing it, try any of the other demos that don't require it instead.
global
frame
,
is_exit
,
video_capture
# A function use to capture frames, will be used by capture_thread.
def
capture
():
global
frame
,
is_exit
while
not
is_exit
:
# Grab a single frame of video
ret
,
frame
=
video_capture
.
read
()
if
__name__
==
'__main__'
:
# Get a reference to webcam #0 (the default one)
video_capture
=
cv2
.
VideoCapture
(
0
)
# Create a thread to capture frames, which can improve delay.
is_exit
=
False
capture_thread
=
threading
.
Thread
(
target
=
capture
,
name
=
'captureThread'
,
daemon
=
True
)
capture_thread
.
start
()
# Load a sample picture and learn how to recognize it.
obama_image
=
face_recognition
.
load_image_file
(
"obama.jpg"
)
obama_face_encoding
=
face_recognition
.
face_encodings
(
obama_image
)[
0
]
# Load a second sample picture and learn how to recognize it.
biden_image
=
face_recognition
.
load_image_file
(
"biden.jpg"
)
biden_face_encoding
=
face_recognition
.
face_encodings
(
biden_image
)[
0
]
# Create arrays of known face encodings and their names
known_face_encodings
=
[
obama_face_encoding
,
biden_face_encoding
]
known_face_names
=
[
"Barack Obama"
,
"Joe Biden"
]
# Initialize some variables
face_locations
=
[]
face_encodings
=
[]
face_names
=
[]
process_this_frame
=
True
while
True
:
# Store a frame to process
frame_process
=
frame
# Resize frame of video to 1/4 size for faster face recognition processing
small_frame
=
cv2
.
resize
(
frame_process
,
(
0
,
0
),
fx
=
0.25
,
fy
=
0.25
)
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
rgb_small_frame
=
small_frame
[:,
:,
::
-
1
]
# Only process every other frame of video to save time
if
process_this_frame
:
# Find all the faces and face encodings in the current frame of video
face_locations
=
face_recognition
.
face_locations
(
rgb_small_frame
)
face_encodings
=
face_recognition
.
face_encodings
(
rgb_small_frame
,
face_locations
)
face_names
=
[]
for
face_encoding
in
face_encodings
:
# See if the face is a match for the known face(s)
matches
=
face_recognition
.
compare_faces
(
known_face_encodings
,
face_encoding
)
name
=
"Unknown"
# If a match was found in known_face_encodings, just use the first one.
if
True
in
matches
:
first_match_index
=
matches
.
index
(
True
)
name
=
known_face_names
[
first_match_index
]
face_names
.
append
(
name
)
process_this_frame
=
not
process_this_frame
# Display the results
for
(
top
,
right
,
bottom
,
left
),
name
in
zip
(
face_locations
,
face_names
):
# Scale back up face locations since the frame we detected in was scaled to 1/4 size
top
*=
4
right
*=
4
bottom
*=
4
left
*=
4
# Draw a box around the face
cv2
.
rectangle
(
frame_process
,
(
left
,
top
),
(
right
,
bottom
),
(
0
,
0
,
255
),
2
)
# Draw a label with a name below the face
cv2
.
rectangle
(
frame_process
,
(
left
,
bottom
-
35
),
(
right
,
bottom
),
(
0
,
0
,
255
),
cv2
.
FILLED
)
font
=
cv2
.
FONT_HERSHEY_DUPLEX
cv2
.
putText
(
frame_process
,
name
,
(
left
+
6
,
bottom
-
6
),
font
,
1.0
,
(
255
,
255
,
255
),
1
)
# Display the resulting image
cv2
.
imshow
(
'Video'
,
frame_process
)
# Hit 'q' on the keyboard to quit!
if
cv2
.
waitKey
(
1
)
&
0xFF
==
ord
(
'q'
):
is_exit
=
True
time
.
sleep
(
0.1
)
break
# Release handle to the webcam
video_capture
.
release
()
cv2
.
destroyAllWindows
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录