1. 首页
  2. 编程语言
  3. Python
  4. 基于YOLOv5的指针式仪表检测代码实现

基于YOLOv5的指针式仪表检测代码实现

上传者: 2023-03-07 18:24:20上传 ZIP文件 76.87MB 热度 24次
## 计算机视觉基于YOLOv5的指针式仪表检测代码实现

import cv2
import numpy as np

# 加载YOLOv5模型
model = cv2.dnn.readNetFromDarknet("yolov5.cfg", "yolov5.weights")
output_layer_names = model.getLayerNames()
output_layer_names = [output_layer_names[i[0] - 1] for i in model.getUnconnectedOutLayers()]

# 加载仪表图片
image = cv2.imread("instrument.jpg")

# 对图片进行预处理
blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False)

# 将图片输入到YOLOv5模型中进行检测
model.setInput(blob)
layer_outputs = model.forward(output_layer_names)

# 解析输出结果
class_ids = []
confidences = []
boxes = []
for output in layer_outputs:
    for detection in output:
        scores = detection[5:]
        class_id = np.argmax(scores)
        confidence = scores[class_id]
        if confidence > 0.5 and class_id == 0:
            center_x = int(detection[0] * image.shape[1])
            center_y = int(detection[1] * image.shape[0])
            width = int(detection[2] * image.shape[1])
            height = int(detection[3] * image.shape[0])
            left = int(center_x - width / 2)
            top = int(center_y - height / 2)
            class_ids.append(class_id)
            confidences.append(float(confidence))
            boxes.append([left, top, width, height])

# 绘制检测结果
for i in range(len(boxes)):
    left, top, width, height = boxes[i]
    cv2.rectangle(image, (left, top), (left + width, top + height), (0, 255, 0), 2)

# 显示检测结果
cv2.imshow("instrument detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
下载地址
用户评论