如何用OpenCV在多显示器环境下实现单屏截图?
多显示器环境下截图副屏画面被裁剪问题求助
我正在开发一款可根据显示器颜色改变RGB灯带的设备,计划通过截取屏幕画面、归一化/计算像素颜色均值来实现功能。已掌握单显示器截图方法,但在多显示器环境下遇到问题:使用pyautogui的代码可实现单屏截图,尝试mss模块时出现副屏画面被裁剪的情况。
以下是我使用pyautogui的代码:
import numpy as np import cv2 import pyautogui # take screenshot using pyautogui image = pyautogui.screenshot() # since the pyautogui takes as a # PIL(pillow) and in RGB we need to # convert it to numpy array and BGR # so we can write it to the disk image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
我尝试使用mss模块但未能成功,存在副屏画面被裁剪的问题:
import numpy as np import cv2 import pyautogui import mss with mss.mss() as sct: # Get information of monitor 2 monitor_number = 1 mon = sct.monitors[monitor_number] # The screen part to capture monitor = { "top": mon["top"], "left": mon["left"], "width": mon["width"], "height": mon["height"], "mon": monitor_number, } output = "sct-mon{mon}_{top}x{left}_{width}x{height}.png".format(**monitor) # Grab the data sct_img = sct.grab(monitor) img = np.array(sct.grab(monitor)) # BGR Image
内容的提问来源于stack exchange,提问作者code-wolf-byte
相关产品推荐
相关产品推荐

