import numpy as np
from PIL import ImageGrab
img = ImageGrab.grab(bbox=(100, 161, 1141, 610))
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需0.5s。
windows API
调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。
PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。
首先需要获取窗口的句柄。
import win32gui
hwnd_title = dict()
def get_all_hwnd(hwnd,mouse):
if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
win32gui.EnumWindows(get_all_hwnd, 0)
for h,t in hwnd_title.items():
if t is not "":
print(h, t)
程序会打印窗口的hwnd和title,有了title就可以进行截图了。
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import *
import win32gui
import sys
hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("screenshot.jpg")
pyautogui
pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,0.04s一张截图,比PyQt稍慢一点,但也很快了。
import pyautogui
import cv2
img = pyautogui.screenshot(region=[0,0,100,100]) # x,y,w,h
# img.save('screenshot.png')
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)
以上这篇对Python获取屏幕截图的4种方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。
Python获取电脑截图有多种方式,具体如下:PIL中的ImageGrab模块windows APIPyQtpyautoguiPIL中的ImageGrab模块import timeimport numpy as npfrom PIL import ImageGrabimg = ImageGrab.grab(bbox=(100, 161, 1141, 610))img = np.array(img....
(必备技能)使用
Python
实现
屏幕
截图
文章目录(必备技能)使用
Python
实现
屏幕
截图
一、序言二、环境配置1、下载pyautogui包2、下载opencv-
python
包3、下载PyQt5包4、下载pypiwin32包三、
屏幕
截屏源码与解析1、使用pyautogui
方法
实现截屏2、使用PyQt
方法
实现截屏a.
获取
窗口的句柄,也就是目标窗口名title。b.使用PyQt5截屏核心程序c.使用PyQt5截屏用Mat格式显示的核心程序四、结语
在csdn上有很多纯copy,这给我复现带来了很大的麻烦
红框内的是获得当前监视器设备的全屏尺寸。也可以可以不要,可以直接给w,h赋值,指定宽度和高度。红框上面的是获得设备准备条件。
第一个红线,是左边距和上边距填充背景色黑色,默认(0,0)就好,也可以自己试试。这里不加图了。
第二个红线就是指定的图片宽和高(>0)。第三个红线,所
截图
的左上角的坐标,若小于0,越界部分则填充黑色。
Win平台下使用
Python
截图
的各
种
方法
0x00 前言0x01 使用PIL库PIL简介使用PIL
截图
0x02 Windows API
方法
关于Windows API使用win32api
截图
0x03 使用PyQtPyQt 简介使用PyQt
截图
0x00 前言
一年前,我在油管上曾经看到过一位大神使用Py进行GTA5 的自动驾驶,但他做出来的性能很差常需要人为干预,于是在学习了一个暑假的深度学习后,我决定做一个自己的基于深度学习的GTA5自动驾驶.
第一步,就是
获取
数据,即
截图
与按键,本文讲大致叙述如何在wi
文章目录写在前面优点缺点安装使用简单使用主要
方法
截图
为文件
方法
一: `m.shot`
方法
二: `m.grab`速度太大?用PIL补充:旧版注意
这个MSS大概是Many Screen Shot的缩写,意为多窗口截屏,是使用ctypes的
截图
。别看它用ctypes调用系统API,它却能跨平台(win,linux,mac)不得不说作者还是很强大的
Github 官方文档
小,压缩(whl)后仅76MB
快,我的surface上大概0.2~0.5s一张(1920x1440px)当然,
def window_capture(filename):
hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
# 根据窗口句柄
获取
窗口的设备上下文DC(Divice Context)
hwndDC = win32gui.GetWindowDC(hwnd)
# 根据窗口的DC
获取
mfcDC
mfcDC = win32ui.CreateDCFrom
dict是
python
中的一个可变的数据类型,用{}表示,dict的key必须是不可变的数据类型,而value的数据类型可以任意。
格式:{key:value,key:value,key:value}
注: 键值对如果是字符串使用单引号,最后一个键值对没有逗号
dict的优点
①:查询
速度快
,可以二分查找
②:key是不可以重复的
不可变数据类型: 元组,bool,int , str 可以hash set
可变数据类型: dict ,list
dict的
方法
1,增加的
方法
:dict有两
种
增加的
方法
(1),如果没有的键值对,则进行添加,如果有,则将
环境windows 10 64bit
python
3.8mss 6.1.0前言
python
-mss 是一个速度非常快的
截图
工具,支持跨平台,使用纯
python
语言开发。安装使用 pip 安装,执行命令pipinstallmss
python
-mss 还提供了命令行工具,使用 mss 就可以直接截取
屏幕
,默认是全屏其它可使用的参数,可以通过 mss -h 来查看$mss-h
usage:...
def window_capture(filename):
hwndDC = win32gui.GetWindowDC(0) # 0表示当前活跃的窗口
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateC.