基于YOLOv5的指针式仪表检测代码实现
## 计算机视觉基于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()
下载地址
用户评论