1 回答

TA貢獻(xiàn)1813條經(jīng)驗 獲得超2個贊
根據(jù)我對您的“相似顏色” 的理解,您需要將藍(lán)色及其變體轉(zhuǎn)換為紅色。我會給你一個在 OpenCV 中執(zhí)行此操作的解決方案。在 HSV 顏色空間而不是 RGB 中分割顏色更容易,以創(chuàng)建顏色在該范圍內(nèi)的掩碼cv2.inRange。
在創(chuàng)建一個值為 255 和 0 的掩碼后,我將其除以 255 以將其轉(zhuǎn)換為 1 和 0,然后將其轉(zhuǎn)換為布爾值。然后就像您在問題中顯示的那樣,只要掩碼正確,就會放置新顏色。編碼:
import cv2
import numpy as np
img = cv2.imread('2.jpg')
res = img.copy()
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_green = np.array([40,50,50])
upper_green = np.array([80,255,255])
r2, g2, b2 = 255, 0, 0
mask = cv2.inRange(hsv, lower_green, upper_green)
mask = mask/255
mask = mask.astype(np.bool)
res[:,:,:3][mask] = [b2, g2, r2] # opencv uses BGR
cv2.imshow('image', img)
cv2.imshow('Result', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
結(jié)果
我轉(zhuǎn)換了綠色,因為這張圖片中的藍(lán)色非常少。您可以將[100, 50, 50]其用作較低范圍和[130, 255, 255]較高范圍。
添加回答
舉報