我正在嘗試使用 OpenCV 將藍色從 BGR 轉換為 HSV。我的代碼是:
blue = np.uint8([[[255,0,0 ]]])?
hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)?
lo_square = np.full((10, 10, 3), hsv_blue, dtype=np.uint8) / 255.0
plt.subplot(1, 1, 1)?
plt.imshow(hsv_to_rgb(lo_square))
plt.show()
我得到的顏色是這樣的:

為什么綠色值為1?opencv 是從哪里弄來的?(請注意,轉換后的顏色值是可見的圖形,[0, 1, 0.824]和的值hsv_blue是array([[[120, 255, 255]]], dtype=uint8))
uj5u.com熱心網友回復:
對于dtype uint8,h在使用 時假定值介于 0 和 180 之間cv2.cvtColor(blue, cv2.COLOR_BGR2HSV),因此即使 s 和 v 值在 0 .. 255 范圍內,您也應該將其除以180.,而不是255.。
這有效:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.colors import hsv_to_rgb
from cv2 import cv2
blue = np.uint8([[[255, 0, 0]]])
hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)
lo_square = np.full((10, 10, 3), hsv_blue, dtype=np.uint8) / [180., 255., 255.]
plt.subplot(1, 1, 1)
plt.imshow(hsv_to_rgb(lo_square))
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/408489.html
標籤:
