喵喵時(shí)光機(jī)
2021-04-10 19:12:03
是否有任何Win32gui或此代碼的Linux或Mac OS等效庫(kù)?在外部項(xiàng)目上工作,此Windows代碼將幫助我抓取屏幕。Havent能夠找到任何相似的庫(kù)。謝謝def grab_screen(region=None):hwin = win32gui.GetDesktopWindow()if region: left,top,x2,y2 = region width = x2 - left + 1 height = y2 - top + 1else: width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN) height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN) left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN) top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)hwindc = win32gui.GetWindowDC(hwin)srcdc = win32ui.CreateDCFromHandle(hwindc)memdc = srcdc.CreateCompatibleDC()bmp = win32ui.CreateBitmap()bmp.CreateCompatibleBitmap(srcdc, width, height)memdc.SelectObject(bmp)memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)signedIntsArray = bmp.GetBitmapBits(True)img = np.fromstring(signedIntsArray, dtype='uint8')img.shape = (height,width,4)srcdc.DeleteDC()memdc.DeleteDC()win32gui.ReleaseDC(hwin, hwindc)win32gui.DeleteObject(bmp.GetHandle())return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)
2 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以通過(guò)以下方式抓取屏幕pyautogui:
import pyautogui
image = pyautogui.screenshot('filename.png')

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以這樣做:)我認(rèn)為Mac OS無(wú)法使用這些WiIn32gui庫(kù)。相反,您可以使用枕頭抓屏。屏幕大小可以更改,具體取決于所需的大小。
import cv2
import numpy as np
import pyautogui
from PIL import ImageGrab
screen_w = 1920
screen_h = 1080
while True:
rgb = ImageGrab.grab(bbox=(0, 0, screen_w, screen_h))
rgb = np.array(rgb)
cv2.imshow('window_frame', rgb)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
添加回答
舉報(bào)
0/150
提交
取消