weijiang2024's picture
Upload folder using huggingface_hub
117b368 verified
import cv2
from ultralytics import YOLO
import torch
# 读取摄像头(返回摄像头)
def load_camera(num="http://192.168.1.3:8080",
width=1920,
height=1080):
cap = cv2.VideoCapture(num)
# 设置摄像头参数
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
if cap.isOpened():
return cap
else:
return None
# 读取视频
def load_video(video_path):
video = cv2.VideoCapture(video_path)
return video
# 加载模型
def load_model(model_path,
yaml_path=None,
task='segment'):
# 加载(改动过结构)的模型
if yaml_path:
model = YOLO(yaml_path, task=task).load(model_path)
else:
model = YOLO(model_path, task=task)
return model
# 加载模型到图形计算设备
def load_device(model):
# 获取图形计算设备信息
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
# 将模型切换到图形计算设备上
model.to(device)
return model
# 将摄像头设置成生成器
def capture_frames(num=0):
cap = load_camera(num)
while True:
ret, frame = cap.read()
if not ret:
break
yield frame
cap.release()
# 使用生成器形成视频流
def generate_capture_frames():
for frame in capture_frames():
ret, buffer = cv2.imencode('.jpg', frame)
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')