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()
相关推荐
Aurorar0rua6 小时前
CS50 x 2024 Notes Python - 01
开发语言·python·学习方法
面包狗AI4S6 小时前
ChatGPT/Codex Windows:本地桌面端应用离线包安装与免安装启动方法(无需管理员权限)
人工智能·windows·ai·chatgpt
用户6602676118796 小时前
备注接口返回成功,数据库却没变:怎样限定一次修复的范围?
python
Dumbness6 小时前
用 Python + UI Automation 读写微信 PC 版:一个群消息自动回复程序的实现与踩坑
python
艺杯羹7 小时前
Windows跨平台编码地雷全解:从GBK静默崩溃到内核级原子写入防御
人工智能·python·桌面客户端
用户8356290780517 小时前
使用 Python 在 Excel 中识别并高亮重复数据与唯一数据
后端·python
CCblandy7 小时前
Agent 工具调用怎么编排?本机实测:并行只到 2.63 倍,慢的先发省 30ms,CPU 活加 worker 无效
人工智能·后端·python·性能优化
茉莉玫瑰花茶7 小时前
GO [ 标准库 ]
开发语言·后端·golang
用户8356290780517 小时前
使用 Python 在 Excel 中查找、替换数据并高亮显示
后端·python
GPU实战笔记7 小时前
PyCharm 接云 GPU:远端项目连接与远程解释器别混为一谈
python·pycharm·ssh·远程开发·云gpu