模型及相关下载
链接: https://pan.baidu.com/s/1J5XH4SYCn8xYeCoAHc17Hw 密码: g5p4
啰嗦
识别是识别,速度不是很理想。detect 0.7s前后
代码
import cv2
as cv
import time
'''
OpenCV4.1.2新增的cv2.dnn_DetectionModel
最新版本OpenCV4.1.2,针对深度神经网络模块,提供了三个类,通过它们,自动实现输入图像预处理与后处理,直接输出检测结果,支持图像分类、对象检测、图像分割三种常见的视觉常见任务
cv2.dnn_ClassificationModel
cv2.dnn_DetectionModel
cv2.dnn_SegmentationModel
'''
net
= cv
.dnn_DetectionModel
('yolov4.cfg', 'yolov4.weights')
net
.setInputSize
(320, 320)
net
.setInputScale
(1.0 / 255)
net
.setInputSwapRB
(True)
frame
= cv
.imread
('golden_retriever.jpg')
with open('coco.names', 'rt') as f
:
names
= f
.read
().rstrip
('\n').split
('\n')
print(names
)
startTime
= time
.time
()
'''
detect
Parameters
[in] frame 图像
[out] classIds 结果检测中的类索引。
[out] confidences 一组相应的置信度。
[out] boxes 一组边界框。
[in] confThreshold 用于根据置信度筛选框的阈值。
[in] nmsThreshold 非最大抑制中使用的阈值。
return 分别是classes coco.names分类下标,confidences 分数,boxes 在图像上的位置
'''
classes
, confidences
, boxes
= net
.detect
(frame
, confThreshold
=0.1, nmsThreshold
=0.4)
endTime
= time
.time
()
print("Time: {}s".format(endTime
-startTime
))
for classId
, confidence
, box
in zip(classes
.flatten
(), confidences
.flatten
(), boxes
):
print(classId
,confidences
,box
)
label
= '%.2f' % confidence
label
= '%s: %s' % (names
[classId
], label
)
labelSize
, baseLine
= cv
.getTextSize
(label
, cv
.FONT_HERSHEY_SIMPLEX
, 0.5, 1)
left
, top
, width
, height
= box
top
= max(top
, labelSize
[1])
cv
.rectangle
(frame
, box
, color
=(0, 255, 0), thickness
=3)
cv
.rectangle
(frame
, (left
, top
- labelSize
[1]), (left
+ labelSize
[0], top
+ baseLine
), (255, 255, 255), cv
.FILLED
)
cv
.putText
(frame
, label
, (left
, top
), cv
.FONT_HERSHEY_SIMPLEX
, 0.5, (0, 0, 0))
cv
.imshow
('out', frame
)
cv
.waitKey
(0)
转载请注明原文地址:https://blackberry.8miu.com/read-42712.html