需要改一下路径

    1. import cv2
    2. # (1)导入yolov4-tiny网络模型结构
    3. # 传入模型结构.cfg文件,模型权重参数.weight文件
    4. net = cv2.dnn.readNet('C:\\Users\\17242\\Desktop\\yolov4-tiny.cfg', 'C:\\Users\\17242\\Desktop\\yolov4-tiny.weights')
    5. # 定义一个目标检测模型,将模型传进去
    6. model = cv2.dnn_DetectionModel(net)
    7. # 设置模型的输入
    8. model.setInputParams(size=(320, 320), scale=1 / 255)
    9. # (2)获取分类文本的信息
    10. classes = [] # 存放每个分类的名称
    11. with open('C:\\Users\\17242\\Desktop\\classes.txt') as file_obj:
    12. # 获取文本中的每一行
    13. for class_name in file_obj.readlines():
    14. # 删除文本中的换行符、空格等
    15. class_name = class_name.strip()
    16. # 将每个分类名保存到列表中
    17. classes.append(class_name)
    18. # (3)视频捕获
    19. cap = cv2.VideoCapture('C:\\Users\\17242\\Desktop\\1.mp4')
    20. # (4)对每一帧视频图像处理
    21. while True:
    22. # 返回是否读取成功ret和读取的帧图像frame
    23. ret, frame = cap.read()
    24. # 图像比较大把它缩小一点
    25. frame = cv2.resize(frame, (1280, 720))
    26. # 视频比较短,循环播放
    27. if cap.get(cv2.CAP_PROP_POS_FRAMES) == cap.get(cv2.CAP_PROP_FRAME_COUNT):
    28. # 如果当前帧==总帧数,那就重置当前帧为0
    29. cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
    30. # 目标检测
    31. classids, scores, bboxes = model.detect(frame, 0.5, 0.3)
    32. print('classids:', classids) # 如:[0]
    33. print('score:', scores) # 如:0.9469002
    34. print('bboxes:', bboxes) # 如:[159 176 816 533]
    35. # (5)显示检测结果
    36. # 遍历所有的检测框信息,把它们绘制出来
    37. for class_id, score, bbox in zip(classids, scores, bboxes):
    38. # 获取检测框的左上角坐标和宽高
    39. x, y, w, h = bbox
    40. # 获取检测框对应的分类名
    41. class_name = classes[class_id]
    42. # 绘制矩形框
    43. cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 255, 0), 2)
    44. # 显示分类文本
    45. cv2.putText(frame, class_name, (x, y + h + 20), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)
    46. # 显示类别概率
    47. cv2.putText(frame, str(int(score * 100)) + '%', (x, y - 5), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 255), 2)
    48. # (6)显示图像
    49. cv2.imshow('Image', frame) # 窗口名,图像变量
    50. if cv2.waitKey(30) & 0xFF == 27: # 每帧滞留30毫秒后消失
    51. break
    52. # 释放视频资源
    53. cap.release()
    54. cv2.destroyAllWindows()

    https://blog.csdn.net/weixin_41868104/article/details/115748281
    image.png
    image.png

    image.png
    image.png
    上图解决。
    image.png

    image.png
    image.png
    image.png
    image.png