Python 如何使用OpenCV将框架颜色更改为与显示相同?

Python 如何使用OpenCV将框架颜色更改为与显示相同?,python,opencv,pyautogui,Python,Opencv,Pyautogui,我无法更改颜色,使其与我的自然迪普利颜色相同。它们总是颠倒的。我尝试过使用不同的颜色空间,但无法让它工作。我希望该程序能够捕获我的屏幕,但也能够检测屏幕上的某些颜色 import cv2 import numpy as np import pyautogui def nothing(x): pass cv2.namedWindow("Tracking") cv2.createTrackbar("LH", "Tracking&quo

我无法更改颜色,使其与我的自然迪普利颜色相同。它们总是颠倒的。我尝试过使用不同的颜色空间,但无法让它工作。我希望该程序能够捕获我的屏幕,但也能够检测屏幕上的某些颜色

import cv2
import numpy as np
import pyautogui


def nothing(x):
    pass


cv2.namedWindow("Tracking")
cv2.createTrackbar("LH", "Tracking", 0, 255, nothing)
cv2.createTrackbar("LS", "Tracking", 0, 255, nothing)
cv2.createTrackbar("LV", "Tracking", 0, 255, nothing)
cv2.createTrackbar("UH", "Tracking", 255, 255, nothing)
cv2.createTrackbar("US", "Tracking", 255, 255, nothing)
cv2.createTrackbar("UV", "Tracking", 255, 255, nothing)

while True:

    screenshot = pyautogui.screenshot()
    screenshot = np.array(screenshot)

    hsv = cv2.cvtColor(screenshot, cv2.COLOR_BGR2HSV) #

    l_h = cv2.getTrackbarPos("LH", "Tracking")
    l_s = cv2.getTrackbarPos("LS", "Tracking")
    l_v = cv2.getTrackbarPos("LV", "Tracking")

    u_h = cv2.getTrackbarPos("UH", "Tracking")
    u_s = cv2.getTrackbarPos("US", "Tracking")
    u_v = cv2.getTrackbarPos("UV", "Tracking")

    l_b = np.array([l_h, l_s, l_v])
    u_b = np.array([u_h, u_s, u_v])

    mask = cv2.inRange(hsv, l_b, u_b)

    res = cv2.bitwise_and(screenshot, screenshot, mask=mask)

    # cv2.imshow("screenshot", screenshot)
    cv2.imshow("mask", mask)
    cv2.imshow("res", res)

    key = cv2.waitKey(1)
    if key == 27:
        break

cv2.destroyAllWindows()

您使用的是Pyautogui截图,它必须在RGB中读取,而不是在Opencv中使用的BGR。因此,在阅读屏幕截图后,将其转换为BGR

screenshot = pyautogui.screenshot()
screenshot = np.array(screenshot)
screenshot = cv2.cvtColor(screenshot, cv2.COLOR_RGB2BGR)