Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_opencv
提交
bd6e2786
S
skill_tree_opencv
项目概览
CSDN 技术社区
/
skill_tree_opencv
通知
44
Star
9
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
bd6e2786
编写于
12月 10, 2021
作者:
AI浩
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update detect_faces.py
上级
13ed05ca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
40 deletion
+40
-40
data/1.OpenCV初阶/7.OpenCV中的深度学习/3.人脸检测/detect_faces.py
data/1.OpenCV初阶/7.OpenCV中的深度学习/3.人脸检测/detect_faces.py
+40
-40
未找到文件。
data/1.OpenCV初阶/7.OpenCV中的深度学习/3.人脸检测/detect_faces.py
浏览文件 @
bd6e2786
import
numpy
as
np
import
numpy
as
np
import
cv2
import
cv2
low_confidence
=
0.5
if
__name__
==
'__main__'
:
image_path
=
'2.jpg'
low_confidence
=
0.5
proto_txt
=
'deploy.proto.txt'
image_path
=
'2.jpg'
model_path
=
'res10_300x300_ssd_iter_140000_fp16.caffemodel'
proto_txt
=
'deploy.proto.txt'
# 加载模型
model_path
=
'res10_300x300_ssd_iter_140000_fp16.caffemodel'
print
(
"[INFO] loading model..."
)
# 加载模型
net
=
cv2
.
dnn
.
readNetFromCaffe
(
proto_txt
,
model_path
)
print
(
"[INFO] loading model..."
)
# 加载输入图像并为图像构建一个输入 blob
net
=
cv2
.
dnn
.
readNetFromCaffe
(
proto_txt
,
model_path
)
# 将大小调整为固定的 300x300 像素,然后对其进行标准化
# 加载输入图像并为图像构建一个输入 blob
image
=
cv2
.
imread
(
image_path
)
# 将大小调整为固定的 300x300 像素,然后对其进行标准化
(
h
,
w
)
=
image
.
shape
[:
2
]
image
=
cv2
.
imread
(
image_path
)
blob
=
cv2
.
dnn
.
blobFromImage
(
cv2
.
resize
(
image
,
(
300
,
300
)),
1.0
,
(
h
,
w
)
=
image
.
shape
[:
2
]
(
300
,
300
),
(
104.0
,
177.0
,
123.0
))
blob
=
cv2
.
dnn
.
blobFromImage
(
cv2
.
resize
(
image
,
(
300
,
300
)),
1.0
,
# 通过网络传递blob并获得检测和预测
(
300
,
300
),
(
104.0
,
177.0
,
123.0
))
print
(
"[INFO] computing object detections..."
)
# 通过网络传递blob并获得检测和预测
net
.
setInput
(
blob
)
print
(
"[INFO] computing object detections..."
)
detections
=
net
.
forward
()
net
.
setInput
(
blob
)
# 循环检测
detections
=
net
.
forward
()
for
i
in
range
(
0
,
detections
.
shape
[
2
]):
# 循环检测
# 提取与相关的置信度(即概率)
for
i
in
range
(
0
,
detections
.
shape
[
2
]):
# 预测
# 提取与相关的置信度(即概率)
confidence
=
detections
[
0
,
0
,
i
,
2
]
# 预测
# 通过确保“置信度”来过滤掉弱检测
confidence
=
detections
[
0
,
0
,
i
,
2
]
# 大于最小置信度
# 通过确保“置信度”来过滤掉弱检测
if
confidence
>
low_confidence
:
# 大于最小置信度
# 计算边界框的 (x, y) 坐标
if
confidence
>
low_confidence
:
box
=
detections
[
0
,
0
,
i
,
3
:
7
]
*
np
.
array
([
w
,
h
,
w
,
h
])
# 计算边界框的 (x, y) 坐标
(
startX
,
startY
,
endX
,
endY
)
=
box
.
astype
(
"int"
)
box
=
detections
[
0
,
0
,
i
,
3
:
7
]
*
np
.
array
([
w
,
h
,
w
,
h
])
# 绘制人脸的边界框以及概率
(
startX
,
startY
,
endX
,
endY
)
=
box
.
astype
(
"int"
)
text
=
"{:.2f}%"
.
format
(
confidence
*
100
)
# 绘制人脸的边界框以及概率
y
=
startY
-
10
if
startY
-
10
>
10
else
startY
+
10
text
=
"{:.2f}%"
.
format
(
confidence
*
100
)
cv2
.
rectangle
(
image
,
(
startX
,
startY
),
(
endX
,
endY
),
y
=
startY
-
10
if
startY
-
10
>
10
else
startY
+
10
(
0
,
0
,
255
),
2
)
cv2
.
rectangle
(
image
,
(
startX
,
startY
),
(
endX
,
endY
),
cv2
.
putText
(
image
,
text
,
(
startX
,
y
),
(
0
,
0
,
255
),
2
)
cv2
.
FONT_HERSHEY_SIMPLEX
,
0.45
,
(
0
,
0
,
255
),
2
)
cv2
.
putText
(
image
,
text
,
(
startX
,
y
),
# 展示图片并保存
cv2
.
FONT_HERSHEY_SIMPLEX
,
0.45
,
(
0
,
0
,
255
),
2
)
cv2
.
imshow
(
"Output"
,
image
)
# 展示图片并保存
cv2
.
imwrite
(
"01.jpg"
,
image
)
cv2
.
imshow
(
"Output"
,
image
)
cv2
.
waitKey
(
0
)
cv2
.
imwrite
(
"01.jpg"
,
image
)
\ No newline at end of file
cv2
.
waitKey
(
0
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录