yolov8使用opencv 调用摄像头,实时目标检测、分割、关键点检测,左上角显示帧率

一、目标检测

import cv2
from ultralytics import YOLO

# 加载 YOLOv8 模型
model = YOLO('yolov8n.pt')
video_path =0 #摄像头ip地址
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
    status, frame = cap.read()
    if not status:
        break
    results = model.predict(source=frame)
    result = results[0]
    anno_frame = result.plot()
    cv2.imshow("V8", anno_frame)
    # 设置延迟以减慢视频播放速度
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

二、关键点检测

import cv2
from ultralytics import YOLO

# 加载 YOLOv8 模型
model = YOLO('yolov8n-pose.pt')
video_path =0 #摄像头ip地址
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
    status, frame = cap.read()
    if not status:
        break
    results = model.predict(source=frame)
    result = results[0]
    anno_frame = result.plot()
    cv2.imshow("V8", anno_frame)
    # 设置延迟以减慢视频播放速度
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

三、分割

import cv2
from ultralytics import YOLO

# 加载 YOLOv8 模型
model = YOLO('yolov8n-seg.pt')
video_path =0 #摄像头ip地址
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
    status, frame = cap.read()
    if not status:
        break
    results = model.predict(source=frame)
    result = results[0]
    anno_frame = result.plot()
    cv2.imshow("V8", anno_frame)
    # 设置延迟以减慢视频播放速度
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 YOLOv8 进行实时目标检测并调用虚拟摄像头,可以按照以下步骤进行: 1. 安装 OpenCV 库和 PyTorch 库。 2. 下载 YOLOv8 模型和相关的配置文件,可以从 GitHub 上的 YOLOv8 项目中进行下载。 3. 使用 OpenCV 库来读取虚拟摄像头中的视频流,并将视频帧传递给 YOLOv8 模型进行目标检测。 4. 在检测到物体后,使用 OpenCV 库将检测结果在视频帧上进行标注,并将标注后的帧输出到虚拟摄像头中。 下面是一个基本的 Python 代码示例: ```python import cv2 import torch import numpy as np # 加载 YOLOv8 模型 model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # 打开虚拟摄像头 cap = cv2.VideoCapture(0) while True: # 读取视频帧 ret, frame = cap.read() # 将视频帧传递给 YOLOv8 模型进行目标检测 results = model(frame) # 标注检测结果 for det in results.xyxy[0]: cv2.rectangle(frame, (int(det[0]), int(det[1])), (int(det[2]), int(det[3])), (0, 255, 0), 2) cv2.putText(frame, f'{model.names[int(det[5])]} {det[4]:.2f}', (int(det[0]), int(det[1] - 10)), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) # 显示帧 cv2.imshow('frame', frame) # 将标注后的帧输出到虚拟摄像头中 # 注意,这里需要使用虚拟摄像头的 API 来输出帧 # 可以使用 pyfakewebcam 库来模拟虚拟摄像头 # 这里只是示例代码,具体实现需要根据自己的虚拟摄像头 API 进行修改 # output_cam.write(frame) # 检查是否按下了 q 键 if cv2.waitKey(1) == ord('q'): break # 释放资源 cap.release() # output_cam.release() cv2.destroyAllWindows() ``` 需要根据自己的虚拟摄像头 API 来修改输出帧的部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值