import time from pathlib import Path import GPUtil import cv2 import numpy as np import torch from PIL import ImageFont, Image, ImageDraw # print(Path(__file__)) # 表示当前脚本文件的路径 # print(Path(__file__).parent) # 表示当前路径的父级目录 # import time # from contextlib import contextmanager # # @contextmanager # def timer(): # start_time = time.time() # yield # end_time = time.time() # print('Time elapsed:', end_time - start_time) # # 使用上下文管理器 # with timer(): # time.sleep(1) # print(torch.cuda.is_available()) # print(GPUtil.getGPUs()[0].name) # def get_first_gpu_name(): # gps = GPUtil.getGPUs() # if gps is None or len(gps) == 0: # raise Exception("未获取到gpu资源, 先检测服务器是否已经配置GPU资源!") # return gps[0].name # gpu_name = get_first_gpu_name() # aa = [g for g in ['3090', '2080', '4090', 'A10'] if g in gpu_name] # print(aa) # # import tensorrt as trt # # 定义反序列化引擎文件的函数 # def deserialize_engine_from_file(engine_file_path): # runtime = trt.Runtime(trt.Logger()) # engine = None # with open(engine_file_path, "rb") as f: # while True: # data = f.read(1024 * 1024) # if not data: # break # tmp_engine = runtime.deserialize_cuda_engine(data) # if engine is None: # engine = tmp_engine # else: # for i in range(tmp_engine.num_bindings): # engine.set_binding_shape(i, tmp_engine.get_binding_shape(i)) # return engine # engine_file_path = "/path/to/engine_file.engine" # s = time.time() # engine = deserialize_engine_from_file(engine_file_path) # print("1 加载trt文件时间", time.time() - s) # s1 = time.time() # with open(engine_file_path, "rb") as f1, trt.Runtime(trt.Logger(trt.Logger.ERROR)) as runtime: # model = runtime.deserialize_cuda_engine(f1.read()) # print("2 加载trt文件时间", time.time() - s1) def get_label_array(color=None, label=None, outfontsize=None, fontpath="conf/platech.ttf"): # Plots one bounding box on image 'im' using PIL fontsize = outfontsize font = ImageFont.truetype(fontpath, fontsize, encoding='utf-8') x,y,txt_width, txt_height = font.getbbox(label) print(x,y,txt_width, txt_height) im = np.zeros((txt_height, txt_width, 3), dtype=np.uint8) im = Image.fromarray(im) draw = ImageDraw.Draw(im) draw.rectangle([0, 0, txt_width, txt_height], fill=tuple(color)) draw.text((0, -3), label, fill=(255, 255, 255), font=font) im_array = np.asarray(im) # if outfontsize: # scaley = outfontsize / txt_height # im_array = cv2.resize(im_array, (0, 0), fx=scaley, fy=scaley) return im_array aaa = time.time() im_array = get_label_array(color=(0, 255, 0), label="排口", outfontsize=40, fontpath="platech.ttf") print(time.time() - aaa) cv2.imshow("frame", im_array) cv2.waitKey(0)