Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_opencv
提交
1dd5fc32
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看板
提交
1dd5fc32
编写于
12月 14, 2021
作者:
AI浩
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
上传新文件deep_learning_object_detection.py
上级
e058b841
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
55 addition
and
0 deletion
+55
-0
data/1.OpenCV初阶/7.OpenCV中的深度学习/2.目标检测/deep_learning_object_detection.py
...阶/7.OpenCV中的深度学习/2.目标检测/deep_learning_object_detection.py
+55
-0
未找到文件。
data/1.OpenCV初阶/7.OpenCV中的深度学习/2.目标检测/deep_learning_object_detection.py
0 → 100644
浏览文件 @
1dd5fc32
import
numpy
as
np
import
cv2
if
__name__
==
"__main__"
:
image_name
=
'11.jpg'
prototxt
=
'MobileNetSSD_deploy.prototxt.txt'
model_path
=
'MobileNetSSD_deploy.caffemodel'
confidence_ta
=
0.2
# 初始化MobileNet SSD训练的类标签列表
# 检测,然后为每个类生成一组边界框颜色
CLASSES
=
[
"background"
,
"aeroplane"
,
"bicycle"
,
"bird"
,
"boat"
,
"bottle"
,
"bus"
,
"car"
,
"cat"
,
"chair"
,
"cow"
,
"diningtable"
,
"dog"
,
"horse"
,
"motorbike"
,
"person"
,
"pottedplant"
,
"sheep"
,
"sofa"
,
"train"
,
"tvmonitor"
]
COLORS
=
np
.
random
.
uniform
(
0
,
255
,
size
=
(
len
(
CLASSES
),
3
))
# load our serialized model from disk
print
(
"[INFO] loading model..."
)
net
=
cv2
.
dnn
.
readNetFromCaffe
(
prototxt
,
model_path
)
# 加载输入图像并为图像构造一个输入blob
# 将大小调整为固定的300x300像素。
# (注意:SSD模型的输入是300x300像素)
image
=
cv2
.
imread
(
image_name
)
(
h
,
w
)
=
image
.
shape
[:
2
]
blob
=
cv2
.
dnn
.
blobFromImage
(
cv2
.
resize
(
image
,
(
300
,
300
)),
0.007843
,
(
300
,
300
),
127.5
)
# 通过网络传递blob并获得检测结果和
# 预测
print
(
"[INFO] computing object detections..."
)
net
.
setInput
(
blob
)
detections
=
net
.
forward
()
# 循环检测结果
for
i
in
np
.
arange
(
0
,
detections
.
shape
[
2
]):
# 提取与数据相关的置信度(即概率)
# 预测
confidence
=
detections
[
0
,
0
,
i
,
2
]
# 通过确保“置信度”来过滤掉弱检测
# 大于最小置信度
if
confidence
>
confidence_ta
:
# 从`detections`中提取类标签的索引,
# 然后计算物体边界框的 (x, y) 坐标
idx
=
int
(
detections
[
0
,
0
,
i
,
1
])
box
=
detections
[
0
,
0
,
i
,
3
:
7
]
*
np
.
array
([
w
,
h
,
w
,
h
])
(
startX
,
startY
,
endX
,
endY
)
=
box
.
astype
(
"int"
)
# 显示预测
label
=
"{}: {:.2f}%"
.
format
(
CLASSES
[
idx
],
confidence
*
100
)
print
(
"[INFO] {}"
.
format
(
label
))
cv2
.
rectangle
(
image
,
(
startX
,
startY
),
(
endX
,
endY
),
COLORS
[
idx
],
2
)
y
=
startY
-
15
if
startY
-
15
>
15
else
startY
+
15
cv2
.
putText
(
image
,
label
,
(
startX
,
y
),
cv2
.
FONT_HERSHEY_SIMPLEX
,
0.5
,
COLORS
[
idx
],
2
)
# show the output image
cv2
.
imshow
(
"Output"
,
image
)
cv2
.
imwrite
(
"output.jpg"
,
image
)
cv2
.
waitKey
(
0
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录