我已经下载了 Python 3.7 和 3.9(均为 64 位)以及 VS Code 来复制以下代码: https ://www.youtube.com/watch?v=WymCpVUPWQ4&t=1291s
但是,当安装“pywin32”然后将包导入代码时,我在三个导入中得到“unresolved-import”:win32gui、win32ui 和 win32con。
我尝试了多种安装方法,奇怪的是从上面的链接复制的代码有效。
尝试通过“pip”安装 https://pypi.org/project/pywin32/
以及从以下位置下载可执行程序进行安装:https ://github.com/mhammond/pywin32/releases
包括使用来自以下网址的 .whl 文件进行安装:https ://www.lfd.uci.edu/~gohlke/pythonlibs/ (及其各自的 Python 版本和位),然后继续执行此处解释的“安装后”: 无法在 Pycharm 中使用来自 pywin32 的 win32gui 模块
尽管如此,错误还是有说服力的。我不太确定自己做错了什么,或者使用的版本当前是否已过时/不兼容。
我使用 64 位可执行文件/.whl 文件在 Python 3.7 和 3.9 中尝试了 4 次安装。
这是我正在使用的代码:
作为旁注,如果“hwnd”设置为“NONE”,则代码可以正常工作,但如果我对此进行评论并使用“hwnd = win32gui.FindWindow(None,'Calculator')”行,它只会显示黑屏即使计算器应用程序已打开。
我想是因为进口。
import win32gui
import win32ui
import win32con
import numpy as np
import PIL
import cv2 as cv
def screen():
w = 1920
h = 1080
#hwnd = win32gui.FindWindow(None, 'Calculator')
hwnd = None
wDC = win32gui.GetWindowDC(hwnd)
dcObj = win32ui.CreateDCFromHandle(wDC)
cDC = dcObj.CreateCompatibleDC()
dataBitMap = win32ui.CreateBitmap()
dataBitMap.CreateCompatibleBitmap(dcObj, w, h)
cDC.SelectObject(dataBitMap)
cDC.BitBlt((0, 0), (w, h), dcObj, (0,0), win32con.SRCCOPY)
signedIntsArray = dataBitMap.GetBitmapBits(True)
#img = np.fromstring(signedIntsArray, dtype='uint8')
img = np.frombuffer(signedIntsArray, dtype='uint8')
img.shape = (h, w, 4)
# free resources
dcObj.DeleteDC()
cDC.DeleteDC()
win32gui.ReleaseDC(hwnd, wDC)
win32gui.DeleteObject(dataBitMap.GetHandle())
#img = img[...,:3]
#img = np.ascontiguousarray(img)
return img
while(True):
sc = screen()
resize = cv.resize(sc,(800,500))
cv.imshow('idk',resize)
if cv.waitKey(1) == ord('q'):
cv.destroyAllWindows()
break