zoukankan      html  css  js  c++  java
  • Python实现屏幕截图

    import time
    import win32gui, win32ui, win32con, win32api


    def window_capture(filename):
    hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
    # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
    hwndDC = win32gui.GetWindowDC(hwnd)
    # 根据窗口的DC获取mfcDC
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    # mfcDC创建可兼容的DC
    saveDC = mfcDC.CreateCompatibleDC()
    # 创建bigmap准备保存图片
    saveBitMap = win32ui.CreateBitmap()
    # 获取监控器信息
    MoniterDev = win32api.EnumDisplayMonitors(None, None)
    w = MoniterDev[0][2][2]
    h = MoniterDev[0][2][3]
    # print w,h   #图片大小
    # 为bitmap开辟空间
    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
    # 高度saveDC,将截图保存到saveBitmap中
    saveDC.SelectObject(saveBitMap)
    # 截取从左上角(0,0)长宽为(w,h)的图片
    saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC, filename)


    beg = time.time()
    for i in range(10):
    window_capture("haha.jpg")
    end = time.time()
    print(end - beg)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    输出结果为0.375秒,也就是说通过windows API每次截图只需要0.0375s,真是快得一逼呀。

    使用PIL的ImageGrab模块
    import time
    from PIL import ImageGrab
    import numpy as np
    import cv2

    beg = time.time()
    debug = False
    # img = ImageGrab.grab(bbox=(250, 161, 1141, 610))
    img = ImageGrab.grab()
    end = time.time()
    print('time:',end - beg)

    img.show()
    img.save("screen.jpg")

    # PIL image to OpenCV image
    im = np.array(img)
    cv2.imshow('cv image', im)
    cv2.waitKey()

    # OpenCV image to PIL image
    im_pil = PIL.Image.fromarray(im)
    im_pil.show(http://www.my516.com)

  • 相关阅读:
    C++ | 继承(基类,父类,超类),(派生类,子类)
    C++ std::pair的用法
    派生类构造函数和多重继承的二义性问题
    C++vector and opencv Mat
    C++中union的使用方法
    C++中数组作为形参的方法
    在Python中使用OpenCV(CV2)对图像进行边缘检测
    你可能会用到的一些小程序效果、工具
    AI口算批改、练习小程序
    拍照搜题小程序
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11153896.html
Copyright © 2011-2022 走看看