簡體   English   中英

如何將此 HSV 轉換為 RGB

[英]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.

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