You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:40:50