python定时截图屏幕,python截屏图片识别

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: