[英]How to convert this HSV into RGB
如何將此 HSV 轉換為 RGB 我想使用 cv2.color cv2.COLOR_BGR2RGB 但結果不一樣。
這是我使用過的圖像 在此處輸入圖像描述
這是我想要的結果,但使用 cv2.COLOR_BGR2RGB 但下面的代碼使用 cv2.COLOR_BGR2HSV在此處輸入圖像描述
import cv2
import numpy as np
## Read
img = cv2.imread("ni.jpg")
## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
## mask of green (36,25,25) ~ (86, 255,255)
# mask = cv2.inRange(hsv, (36, 25, 25), (86, 255,255))
mask = cv2.inRange(hsv, (7, 25, 25), (70, 255,255))
## slice the green
imask = mask>0
green = np.zeros_like(img, np.uint8)
green[imask] = img[imask]
## save
cv2.imwrite("green.png", green)
要將圖像從 HSV 轉換為 RGB,您可以執行以下操作:
rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)
並且對 BGR 做 HSV 是
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
您必須知道 OpenCV 在讀取/保存圖像時使用 BGR。 您可以使用 cvtColor 和 cv2.COLOR_RGB2BGR 或 cv2.COLOR_BGR2RGB 在 RGB 和 BGR 之間進行轉換。
編輯:
然而,如果你想要的是一個綠色香蕉(或黃色香蕉)的面具,問題是你定義綠色的方式:它現在包括很多其他顏色,包括黃色。
你可以用 HSV 做的是只看第一個通道,色調:
在這里你可以看到綠色和黃色是可以區分的:綠色香蕉的像素值大約在 30 到 50 之間,黃色在 20 到 30 之間。
你可以用它做一個面具。 我使用另一個庫來清理我們不想要的像素。 它是 Scikit 圖像。 這也可以在 OpenCV 中完成,但需要更多時間......
所以這是我的代碼:
import cv2
import numpy as np
import matplotlib.pyplot as plt
from skimage.morphology import remove_small_objects, remove_small_holes
## Read
img = cv2.imread("ni.jpg")
## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
hue = hsv[:,:,0]
# plt.imshow(hue) # this show the figure in my post
# plt.show()
# mask = np.bitwise_and(hue > 20, hue < 35) # for yellow
mask = np.bitwise_and(hue > 30, hue < 50) # for green
mask = remove_small_objects(mask, 1000)
mask = remove_small_holes(mask, 1000)
green = np.zeros_like(img, np.uint8)
green[mask] = img[mask]
## save
cv2.imwrite("green.png", green)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.