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)