簡體   English   中英

如何將框架 colors 與 OpenCV 更改為與顯示器相同?

[英]How to change the frame colors with OpenCV to be same as display?

我無法更改 colors 以使它們與我的天然透析 colors 相同。 它們總是倒置的。 我嘗試過使用不同的色彩空間,但無法讓它工作。 我希望程序捕獲我的屏幕,但也能夠在屏幕上檢測到某些 colors

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM