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

MSS sct.grab()截图色彩空间确认及OpenCV颜色兼容问题咨询

MSS截图颜色格式与OpenCV适配问题解答

你完全可以确认这个判断,具体逻辑如下:

  • MSS默认返回BGRA格式的截图(通道顺序:蓝-绿-红-透明度),你通过[:, :, :3]去掉alpha通道后,得到的是BGR格式的数组。
  • OpenCV的cv2.imshow()和cv2.imwrite()本身就以BGR格式处理图像,所以直接用处理后的数组显示/保存时,颜色完全符合预期。
  • 当你按[R, G, B]顺序创建掩码时,实际数组通道是B-G-R,红、蓝通道顺序相反,导致掩码结果和预期相反,这正好印证了MSS的原始格式是BGRA。
  • 执行cv2.cvtColor(res, cv2.COLOR_BGRA2RGB)后,数组通道变为R-G-B,但OpenCV显示函数仍按BGR解析,所以显示颜色反转;此时通道顺序和你掩码用的[R, G, B]匹配,掩码操作就能正常工作。

附上你提到的两段代码:

原始截图代码:

with mss.mss() as sct:
    monitor = rect
    res = np.array(sct.grab(monitor))[:, :, :3] # remove alpha

色彩转换测试代码:

res = cv2.cvtColor(res, cv2.COLOR_BGRA2RGB)
cv2.imshow("res", res)
cv2.waitKey(0)

内容的提问来源于stack exchange,提问作者ktom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:15:34