马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
检测效果可以看我b站视频【yolo检测框表现中文-哔哩哔哩】
https://b23.tv/iXZRt6m- from ultralytics import YOLO
- import numpy as np
- import cv2
- from ultralytics import YOLO
- # Load a pretrained YOLOv8n model
- model = YOLO("yolov8n.pt")#我加载的是官方权重
- # Define path to video file
- video_path = r"D:\daye_input.mp4"
- cap = cv2.VideoCapture(video_path)
- if not cap.isOpened():
- print("Cannot open camera")
- exit()
- fps = cap.get(cv2.CAP_PROP_FPS)#输入视频帧率
- print(f"输入视频帧率为:Frames per second: {fps}")
- # 保存视频的一些设置
- width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
- height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
- # width = int(1920)
- # height = int(1080)
- # fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 保存视频的编码格式
- # output_video_path = 'daye.mp4'
- # fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 保存视频的编码格式
- # output_video_path = 'daye.mp4'
- fourcc = cv2.VideoWriter_fourcc(*'XVID') # 保存视频的编码格式
- output_video_path = 'daye.avi'
- out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))
- from PIL import Image, ImageDraw, ImageFont
- # 设置字体
- font = ImageFont.truetype(r'C:\Windows\Fonts\SimHei.ttf', 60) # 替换为你的字体路径
- # 循环遍历视频帧
- while cap.isOpened():
- # start_time = time.time() #记录开始时间
- # 从视频读取一帧
- success, frame = cap.read()
- if success:
- # 在帧上运行YOLOv8追踪,持续追踪帧间的物体
- # results = model(frame, conf=0.3,iou=0.5,imgsz=(640,640))
- results = model.track(frame, persist=True, conf=0.3, iou=0.5, tracker="ultralytics/cfg/trackers/bytetrack.yaml",
- imgsz=(1920,1080))
- img_pil = Image.fromarray(frame)
- draw = ImageDraw.Draw(img_pil) # 创建Draw对象
- if results[0].boxes and results[0].boxes.id is not None:
- boxes = results[0].boxes.xyxy.cpu()
- clss = results[0].boxes.cls
- track_ids = results[0].boxes.id.int().cpu().tolist()
- for id, cls, boxxyxy in zip( track_ids, clss, boxes ):
- class_id = cls.item()
- x1, y1, x2, y2 = boxxyxy
- tracker_id = id
- if class_id == 0.0:
- # class_id = 'DaYe'
- draw.text((int(x1), int(y1) - 50), str(tracker_id)+"号大爷", font=font, fill=(0, 0,255))# 在图片上绘制中文
- # cv2.rectangle(img_pil, (int(x1), int(y1)), (int(x2), int(y2)), (0, 69, 255), 2) # 橙红
- draw.rectangle([(int(x1), int(y1)), (int(x2), int(y2))], outline="blue", width=4) # 红色边框,宽度5
- # else:
- # draw.text((int(x1), int(y1) - 50), "不像大爷", font=font,
- # fill=(255, 0, 0)) # 在图片上绘制中文
- # # cv2.rectangle(img_pil, (int(x1), int(y1)), (int(x2), int(y2)), (0, 69, 255), 2) # 橙红
- #
- # draw.rectangle([(int(x1), int(y1)), (int(x2), int(y2))], outline="red", width=4) # 红色边框,宽度5
- # img = cv2.cvtColor(np.array(img_pil), cv2.COLOR_BGR2RGB)
- img = np.array(img_pil)
- # cv2.imshow('frame_pil', img)
- # img = cv2.resize( img, (1920, 1080))
- out.write(img)
- cv2.imshow('frame_pil', img)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- # cv2.waitKey(0)
- # cv2.destroyAllWindows()
- else:
- break
- cap.release()
- out.release()
- cv2.destroyAllWindows()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |