bsw215583320
2025-01-16 8446139d79c366fc2c44d72c2ddb963817a8ce7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
import os
import cv2
import numpy as np
import onnxruntime
 
if __name__ == '__main__':
    img = cv2.imread("data/images/2/20250114200010.jpg")
    identify_session = onnxruntime.InferenceSession("model/herb_identify.onnx")
    herbs = eval(identify_session.get_modelmeta().custom_metadata_map['names'])
    # 预处理
    herb_blob = cv2.dnn.blobFromImage(img, 1 / 255.0, (640, 640), swapRB=True, crop=False)
    # 模型推理
    herb_outputs = identify_session.run(None, {identify_session.get_inputs()[0].name: herb_blob})
    herb_probabilities = herb_outputs[0]
 
    top_five_classes = np.argsort(herb_probabilities, axis=1)[0][-5:][::-1]
    name = ""
    for i, class_id in enumerate(top_five_classes):
        # 保留两位小数
        probability = round(herb_probabilities[0][class_id], 2)
 
        herb_class = herbs[class_id]
        name = name + " " + herb_class + ":" + str(probability)
        # 将识别结果打印到图片上
        cv2.putText(img, herb_class + ":" + str(probability), (10, (i+1)*40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
 
    # 显示图片
    cv2.imshow("Output", img)
    print(name)
    # 等待
    cv2.waitKey(0)