YOLOv11实时预测电脑屏幕并显示

cv2模块

 创建窗口后设置窗口大小,设置窗口大小要使用resizeWindow

cv2.resizeWindow(winname, width, height)
参数作用
WINDOW_NORMAL用户能够调节窗口大小
WINDOW_AUTOSIZE根据图像大小显示窗口,大小固定
WINDOW_FREERATIO调整图像。不考虑其比例
WINDOW_KEEPRATIO保持图像比例

      使用该函数创建一个窗口,代码如下

cv2.namedWindow("window", cv2.WINDOW_NORMAL)

实时检测案例:

from ultralytics import YOLO
import cv2
import numpy as np
from mss import mss
import time

# 加载训练好的模型
model = YOLO('best.pt')

# 设置屏幕捕获区域 (默认全屏)
pcwidth=600
pcheight=1600

 

# 创建屏幕捕获对象
sct = mss()

 
cv2.namedWindow("yolov11_predict_windows", cv2.WINDOW_NORMAL)

try:
    while True:
        start_time = time.time()
        
        # 预测屏幕范围*
        screenshot = sct.grab({
        "top": 0,
        "left": 0,
        "width": pcwidth,  
        "height": pcheight  
        })

        img = np.array(screenshot)
        img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)  # 转换颜色通道

        results = model.predict(img, stream=False, verbose=False)
        
        annotated_img = results[0].plot()  # 自动绘制检测结果 
        fps = 1 / (time.time() - start_time)
        cv2.putText(annotated_img, f"FPS: {fps:.2f}", (10, 30),
                   cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
        # 显示结果
        cv2.imshow("yolov11_predict_windows", annotated_img)
        cv2.resizeWindow("yolov11_predict_windows", pcwidth, img.shape[0])

        # 按'q'退出
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
finally:
    cv2.destroyAllWindows()
    print("Screen detection stopped.")

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值