YOLO基本使用


1.准备模型、标签、配置

github地址:

https://github.com/AlexeyAB/darknet

 下载yolov4.weights

 下载cfg/coco.names

 下载cfg/yolov4.cfg

2.新建一个项目

3.main.py

import cv2
import random

# 加载文件
yolo_cfg = "E:\\Repository\\Git\\object-detection\\mask-detection\\model\\yolov4.cfg"
yolo_weights = "E:\\Repository\\Git\\object-detection\\mask-detection\\model\\yolov4.weights"
yolo_name = "E:\\Repository\\Git\\object-detection\\mask-detection\\model\\coco.names"
img = "E:\\Repository\\Git\\object-detection\\mask-detection\\data\\val_19.jpg"

# 网络设置
net = cv2.dnn_DetectionModel(yolo_cfg,yolo_weights)
net.setInputSize(608, 608)
net.setInputScale(1.0 / 255)
net.setInputSwapRB(True)
with open(yolo_name, 'rt') as f:
    names = f.read().rstrip('\n').split('\n')

# 加载图像及类别
img = cv2.imread(img)
# cv2.imshow('read img', img)

# 模型检测
classes, confidences, boxes = net.detect(img, confThreshold=0.1, nmsThreshold=0.4)

# 将检测结果显示到图像上
for classId, confidence, box in zip(classes.flatten(), confidences.flatten(), boxes):
    label = '%s: %.2f' % (names[classId], confidence)
    labelSize, baseLine = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.5, 1)
    left, top, width, height = box
    top = max(top, labelSize[1])
    b = random.randint(0,255)
    g = random.randint(0,255)
    r = random.randint(0,255)
    cv2.rectangle(img, box, color=(b, g, r), thickness=2)
    cv2.rectangle(img, (left-1, top - labelSize[1]), (left + labelSize[0], top), (b, g, r), cv2.FILLED)
    cv2.putText(img, label, (left, top), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255-b, 255-g, 255-r))

cv2.imshow('detect out', img)
cv2.waitKey(0)
OCR