python定时截图屏幕,python截屏图片识别
大家好,本文主要讲用Python对截屏的详细讲解。有兴趣的同学过来看看,如果对你有帮助记得收藏。
一、前言二。环境配置三。截屏源代码及分析。结论
目录
csdn上有很多纯拷贝,给我复制带来了很多麻烦,所以我想根据自己找截图的亲身经历记录下来,给未来的自己看,以免忘记这样的时光。
因为我更喜欢使用opencv处理图像,所以截图总是以使用opencv显示图像这一步结束。
一、序言
1.下载pyautogui包
pip安装pyautogui-I https://pypi.tuna.tsinghua.edu.cn/simple/
注意:如果用pyautogui方法截图,下载这个就行了。
2.下载opencv-python包
pip安装opencv-python-I https://pypi.tuna.tsinghua.edu.cn/simple/
注:便于图片的进一步处理,如实时采集。
3.下载PyQt5包
pip安装pyqt 5-I https://pypi.tuna.tsinghua.edu.cn/simple/
注意:使用PyQt方法捕获一个屏幕来下载一个示例。
4.下载pypiwin32包
pip安装pypi win32-I https://pypi.tuna.tsinghua.edu.cn/simple/
注意:使用PyQt方法捕获一个屏幕来下载一个示例。
二、环境配置
1.使用pyautogui方法实现屏幕截图。
导入pyautogui
导入cv2
将numpy作为np导入
Img=pyautogui .截图(region=[300,50,200,100]) #分别代表:左上角坐标,宽度,高度。
#将采集的图片转换成二维矩阵形式,然后将RGB转换成BGR。
#因为imshow,默认通道顺序是BGR,而pyautogui默认是RGB,所以需要转换,否则会有一些问题。
img=cv2 . CVT color(NP . as array(img),cv2。COLOR_RGB2BGR)
2.即时消息显示(“截图”,即时消息)
cv2.waitKey(0)
优点:
方便,简单到只写一行核心部分。速度在0.04s左右,基本可以达到实时截屏的效果。截屏面积可以自由确定。
缺点:
但是你不能指定采集程序的窗口,所以窗口不能被屏蔽。2.用PyQt方法实现屏幕截图。获取窗口的句柄,这是目标窗口的名称标题。
导入win32gui
Hwnd_title=dict() #创建一个字典来保存句柄和窗口名称之间的映射关系。
def get_all_hwnd(hwnd,鼠标):
如果win32gui。IsWindow(hwnd)和win32gui。IsWindowEnabled(hwnd)和win32gui。IsWindowVisible(hwnd):
hwnd _ title . update({ hwnd : win32 GUI。GetWindowText(hwnd)})
win32gui。EnumWindows(get_all_hwnd,0)
对于hwnd_title.items()中的h,t :
如果t!=:
打印(h,t)
注意:该程序将打印所有窗口的hwnd和标题。有标题,可以截图。
B.使用PyQt5截屏核心程序
来自PyQt5。QtWidgets导入QApplication
导入win32gui
导入系统
#这是一个全屏截图。
hwnd=win32gui。FindWindow(无, c :/Windows/system32/cmd . exe )
app=QA application(sys . argv)
screen=QA application . primary screen()
img=screen.grabWindow(hwnd)。toImage()
img . save( snapshot . jpg )
注意:如果要拦截某个特定的窗口,只需将c :/Windows/System32/cmd . exe更改为之前程序打印的标题,并确保该窗口没有被你最小化。
优点:
方便,简单到只写一行核心部分。速度在0.04s左右,基本可以达到实时截屏的效果。你可以自由决定要截屏的窗口。
缺点:
你不能自由决定截屏区域。c .使用PyQt5截屏以Mat格式显示核心程序
def convertQImageToMat(传入图像):
将QImage转换为opencv MAT格式
# Format_RGB32=4,存储格式为B,G,R,A对应0,1,2,3。
# RGB32图像的每个像素由32位表示,占4个字节,
# R、G、B分量分别用8位表示,存储顺序为B、G、R,保留最后8个字节。
incoming image=incoming image . converttoformat(4)
width=incomingImage.width()
height=incomingImage.height()
ptr=incomingImage.bits()
ptr . setsize(incoming image . bytecount())
arr=np.array(ptr)。shape(height,width,4) #复制数据
# arr是BGRA,4通道画面
返回arr
来自PyQt5。QtWidgets导入QApplication
导入win32gui
导入系统
导入cv2
将numpy作为np导入
Hwnd=win32gui。FindWindow(无,《剑侠之魂》中文版小游戏,在线玩,4399小游戏-360安全浏览器13.1 )
app=QA application(sys . argv)
screen=QA application . primary screen()
img=screen.grabWindow(hwnd)。toImage()
Img=convertQImageToMat(img)#将采集的图像从QImage转换为RBG格式。
cv2.imshow(asd ,img) #imshow
cv2.waitKey(0)
三、屏幕截屏源码与解析
我查询了多种截屏方法后,发现只学这两种截屏方法就可以了,就没放其他方法了。
关于用Python进行截屏的详细说明,本文到此结束。更多相关Python截屏,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。