YOLO系列——实时屏幕检测

通过PIL的ImageGrab.grab可以截取屏幕,转换成BGR格式后就可以给YOLO进行检测,一旦屏幕上出现指定的内容,就会标记出来。

python 复制代码
import cv2
from ultralytics import YOLO
from PIL import ImageGrab
import numpy as np
import cv2 as cv

model = YOLO("../yolov8n.pt")
a = (100,200,800,1000)#None 全屏,[100,200,800,1000]
a=None
while 1:
    scrn = ImageGrab.grab(bbox=a)
    #把RGB->BGR
    scrn = np.array(scrn)
    scrn = cv.cvtColor(scrn,cv2.COLOR_RGB2BGR)
    #这下YOLO可以用了 GBR
    results = model.predict(scrn)
    #results[0]保存了第0张图片的x,y,x,y坐标,conf每个目标的置信度,cls每个飙的泪飙

    # for box in results[0].boxes:
    #     print("坐标:",box.xyxy[0].tolist())
    #     print("置信度:",box.conf[0].item())
    #     print("类别ID:",box.cls[0].item())

    annotated_frame=results[0].plot()
    cv2.imshow('jian',annotated_frame) #窗口名jian,后面是检测到的帧信息
    if cv2.waitKey(1) &0xFF == ord('q'):
        break

cv2.destroyAllWindows()

屏幕一旦出现关注的目标就把屏幕保存,比如抓舞弊:

python 复制代码
import cv2
from ultralytics import YOLO
from PIL import ImageGrab
import numpy as np
import cv2 as cv

model = YOLO(r"D:\PyCharm\LearningYOLO\da_fa_yolo\runs\detect\train4\weights\best.pt")
a = (100,200,800,1000)#None 全屏,[100,200,800,1000]
a=None
while 1:
    scrn = ImageGrab.grab(bbox=a)
    #把RGB->BGR
    scrn1 = np.array(scrn)
    scrn1 = cv.cvtColor(scrn1,cv2.COLOR_RGB2BGR)
    #这下YOLO可以用了 GBR
    results = model.predict(scrn)
    #results[0]保存了第0张图片的x,y,x,y坐标,conf每个目标的置信度,cls每个飙的泪飙

    # for box in results[0].boxes:
    #     print("坐标:",box.xyxy[0].tolist())
    #     print("置信度:",box.conf[0].item())
    #     print("类别ID:",box.cls[0].item())
    c=0
    t=500
    for box in results[0].boxes:
        if box.cls[0]== 0:
            print("找到了目标")
            # 保存截图
            scrn.save(fr"./t/{c}.png")
            # 发出蜂鸣
            winsound.Beep(1000,t) #蜂鸣的频率1000,维持时间ms
            c+=1
    annotated_frame = results[0].plot()
    cv2.imshow('jian',annotated_frame)
    if cv2.waitKey(1)&0xFF==ord('q'):
        break





cv2.destroyAllWindows()
相关推荐
badhope15 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
码云数智-园园16 小时前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
吴佳浩16 小时前
GPU 编号进阶:CUDA\_VISIBLE\_DEVICES、多进程与容器化陷阱
人工智能·pytorch·python
C++ 老炮儿的技术栈17 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl17 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
Liu6288817 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手17 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
全栈凯哥17 小时前
18.Python中的导入类完全指南
python
AI科技星17 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
zhangfeng113317 小时前
Windows 的 Git Bash 中使用 md5sum 命令非常简单 md5做文件完整性检测 WinRAR 可以计算文件的 MD5 值
人工智能·windows·git·bash