2.16. 在 V4L2 中定義色彩空間¶
在 V4L2 中,色彩空間由四個值定義。第一個是色彩空間識別符號 (enum v4l2_colorspace),它定義了色度、預設傳輸函式、預設 Y’CbCr 編碼和預設量化方法。第二個是傳輸函式識別符號 (enum v4l2_xfer_func),用於指定非標準傳輸函式。第三個是 Y’CbCr 編碼識別符號 (enum v4l2_ycbcr_encoding),用於指定非標準 Y’CbCr 編碼,第四個是量化識別符號 (enum v4l2_quantization),用於指定非標準量化方法。大多數時候,只需要填充 struct v4l2_pix_format 或 struct v4l2_pix_format_mplane 的色彩空間欄位。
在 HSV 格式中,色調定義為圓柱形顏色表示上的角度。通常這個角度以度為單位測量,即 0-360。當我們把這個角度值對映到 8 位時,有兩種基本方法:將角度值除以 2 (0-179),或者使用整個範圍 0-255,將角度值除以 1.41。enum v4l2_hsv_encoding 指定使用哪種編碼。
注意
所有色彩空間的預設 R’G’B’ 量化都是全範圍。HSV 格式始終是全範圍。
-
type v4l2_colorspace¶
識別符號 |
詳情 |
|---|---|
|
預設色彩空間。應用程式可以使用它來讓驅動程式填充色彩空間。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
原始色彩空間。這用於原始影像捕獲,其中影像經過最小處理,並且使用裝置的內部色彩空間。使用此“色彩空間”處理影像的軟體必須瞭解捕獲裝置的內部結構。 |
-
type v4l2_xfer_func¶
識別符號 |
詳情 |
|---|---|
|
使用色彩空間定義的預設傳輸函式。 |
|
使用 Rec. 709 傳輸函式。 |
|
使用 sRGB 傳輸函式。 |
|
使用 opRGB 傳輸函式。 |
|
使用 SMPTE 240M 傳輸函式。 |
|
不使用傳輸函式(即使用線性 RGB 值)。 |
|
使用 DCI-P3 傳輸函式。 |
|
使用 SMPTE 2084 傳輸函式。參見 傳輸函式 SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)。 |
-
type v4l2_ycbcr_encoding¶
識別符號 |
詳情 |
|---|---|
|
使用色彩空間定義的預設 Y’CbCr 編碼。 |
|
使用 BT.601 Y’CbCr 編碼。 |
|
使用 Rec. 709 Y’CbCr 編碼。 |
|
使用擴充套件色域 xvYCC BT.601 編碼。 |
|
使用擴充套件色域 xvYCC Rec. 709 編碼。 |
|
使用預設的非恆定亮度 BT.2020 Y’CbCr 編碼。 |
|
使用恆定亮度 BT.2020 Yc’CbcCrc 編碼。 |
|
使用 SMPTE 240M Y’CbCr 編碼。 |
-
type v4l2_hsv_encoding¶
識別符號 |
詳情 |
|---|---|
|
對於色調,每個 LSB 是兩度。 |
|
對於色調,360 度被對映到 8 位,即每個 LSB 大約是 1.41 度。 |
-
type v4l2_quantization¶
識別符號 |
詳情 |
|---|---|
|
使用色彩空間定義的預設量化編碼。對於 R’G’B’ 和 HSV,這始終是全範圍。對於 Y’CbCr,這通常是有限範圍。 |
|
使用全範圍量化編碼。即範圍 [0…1] 被對映到 [0…255](可能裁剪到 [1…254] 以避免 0x00 和 0xff 值)。Cb 和 Cr 從 [-0.5…0.5] 對映到 [0…255](可能裁剪到 [1…254] 以避免 0x00 和 0xff 值)。 |
|
使用有限範圍量化編碼。即範圍 [0…1] 被對映到 [16…235]。Cb 和 Cr 從 [-0.5…0.5] 對映到 [16…240]。有限範圍不能與 HSV 一起使用。 |