我试图在使用 mss 和 opencv 播放网站时记录屏幕,但我不希望程序使用当前屏幕。我想把它们放在第二个桌面上播放,比如下图中的桌面 2 macos 有 4 个桌面设置
所以我可以在桌面 1 中工作而不会受到任何干扰。
我将 MSS 与 pytesseract 结合使用,尝试在屏幕上读取以确定正在监视的区域中的字符串。我的代码如下:
import Image
import pytesseract
import cv2
import os
import mss
import numpy as np
with mss.mss() as sct:
mon = {'top': 0, 'left': 0, 'width': 150, 'height': 150}
im = sct.grab(mon)
im = np.asarray(im)
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
#im_gray = plt.imshow(im_gray, interpolation='nearest')
cv2.imwrite("test.png", im_gray)
#cur_dir = os.getcwd()
text = pytesseract.image_to_string(Image.open(im_gray))
print(text)
cv2.imshow("Image", im)
cv2.imshow("Output", im_gray)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
我返回以下错误: AttributeError: 'numpy.ndarray' object has no attribute 'read'
我还尝试使用 pyplot 将其转换回图像,如代码示例中的注释行所示。然而,这会打印回错误: TypeError: img is not a numpy array, isn't …
我想要一个python脚本,它可以在不立即将其直接保存到磁盘的情况下截取屏幕截图。基本上是否有一个带有函数的模块,该函数返回原始字节,然后我可以自己手动将其写入文件?
import some_screenshot_module
raw_data = some_screenshot_module.return_raw_screenshot_bytes()
f = open('screenshot.png','wb')
f.write(raw_data)
f.close()
Run Code Online (Sandbox Code Playgroud)
我已经检查了 mss、pyscreenshot 和 PIL,但我找不到我需要的东西。我找到了一个看起来像我要找的函数,叫做 frombytes。但是,在从 frombytes 函数检索字节并将其保存到文件中后,我无法将其视为 .BMP、.PNG、.JPG。是否有一个函数可以返回我可以自己保存到文件中的原始字节,或者可能是一个具有类似功能的模块?