gpt4 book ai didi

python - 如何将此HSV转换为RGB

转载 作者:行者123 更新时间:2023-12-02 16:27:51 27 4
gpt4 key购买 nike

如何将此HSV转换为RGB我想使用cv2.color cv2.COLOR_BGR2RGB,但结果不一样。

这是我用过的图片
enter image description here

这是我想要但使用cv2.COLOR_BGR2RGB的结果,但是下面的代码正在使用cv2.COLOR_BGR2HSV
enter image description here

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)

并做HSV到BGR是
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

您必须知道OpenCV在读取/保存图像时正在使用BGR。
您可以使用cvtColor和cv2.COLOR_RGB2BGR或cv2.COLOR_BGR2RGB在RGB和BGR之间进行转换。

编辑:

但是,如果您要戴着绿色香蕉(或黄色香蕉)的面具,那么问题就在于您定义绿色的方式:它现在包括许多其他颜色,包括黄色。

您可以使用HSV做的只是看第一个 channel ,即色调:

Hue of bananas

在这里您可以看到绿色和黄色可以区分:绿色香蕉的像素值大约在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)

关于python - 如何将此HSV转换为RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60295773/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com