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()
相关推荐
深蓝海拓6 分钟前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
u0109272718 分钟前
模板编译期排序算法
开发语言·c++·算法
datalover15 分钟前
CompletableFuture 使用示例
java·开发语言
Dfreedom.16 分钟前
开运算与闭运算:图像形态学中的“清道夫”与“修复匠”
图像处理·python·opencv·开运算·闭运算
2301_7903009620 分钟前
用Python读取和处理NASA公开API数据
jvm·数据库·python
m0_6860416123 分钟前
C++中的适配器模式变体
开发语言·c++·算法
清风~徐~来28 分钟前
【视频点播系统】WebSocketpp 介绍及使用
开发语言
葱明撅腚31 分钟前
利用Python挖掘城市数据
python·算法·gis·聚类
Serendipity_Carl38 分钟前
1637加盟网数据实战(数分可视化)
爬虫·python·pycharm·数据可视化·数据清洗
爱吃大芒果40 分钟前
Flutter for OpenHarmony 实战:mango_shop 路由系统的配置与页面跳转逻辑
开发语言·javascript·flutter