使用YOLOv4模型实现物体识别

模型及相关下载

链接: 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')
# 输入图像大小 608 会慢不少
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))

# .flatten()降维
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)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值