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()
相关推荐
2601_9563198841 分钟前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
知无不研1 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
过期的秋刀鱼!1 小时前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计1 小时前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
cfm_29141 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
DeepVisionary2 小时前
从GPT-5.6 Sol的Ultrafast模式看推理速度竞赛:750 token/秒背后,Cerebras的晶圆级生意
python·自动化
C++ 老炮儿的技术栈3 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011163 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据3 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
leisoo80973 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法