OpenCV的色彩空間例項

2021-10-06 14:33:20 字數 2475 閱讀 2301

本文使用python實現。

色彩空間常用的就如下幾種:rgb 、hsv 、hsi 、ycrcb(yuv)

rgb色彩就是常說的光學三原色,r代表red(紅色),g代表green(綠色),b代表blue(藍色)。自然界中肉眼所能看到的任何色彩都可以由這三種色彩混合疊加而成。

hsv(hue, saturation, value)是根據顏色的直觀特性由a. r. smith在2023年建立的一種顏色空間, 也稱六角錐體模型。

hsi〔hue-saturation-intensity(lightness),hsi或hsl〕顏色模型用h、s、i三引數描述顏色特性,其中h定義顏色的頻率,稱為色調;s表示顏色的深淺程度,稱為飽和度,i表示強度或亮度。在hsi顏色模型的雙六稜錐表示,i是強度軸,色調h的角度範圍為[0,2π],其中,純紅色的角度為0,純綠色的角度為2π/3,純藍色的角度為4π/3。

import cv2 as cv

def color_space_demo(image):

gray = cv.cvtcolor(image, cv.color_bgr2gray) # rgb轉灰度

cv.imshow("gray", gray)

hsv = cv.cvtcolor(image, cv.color_bgr2hsv) # rgb轉hsv

cv.imshow("hsv", hsv)

yuv = cv.cvtcolor(image, cv.color_rgb2yuv) # rgb轉yuv

cv.imshow("yuv", yuv)

ycrcb = cv.cvtcolor(image, cv.color_rgb2ycrcb) # rgb轉ycrcb

cv.imshow("ycrcb", ycrcb)

src = cv.imread("c:/users/admin/desktop/14.jpg") # 開啟一張

cv.namedwindow("input image", cv.window_autosize) # 設定尺寸,自動

cv.imshow("input image", src) # 顯示影象

color_space_demo(src)

cv.waitkey(0)

cv.destroyallwindows()

執行效果如下:

hsv = cv.cvtcolor(frame, cv.color_bgr2hsv) # 將rgb轉成hsv

lower_hsv = np.array([156, 43, 46]) # 要過濾的顏色低值(紅色)

upper_hsv = np.array([180, 255, 255]) # 要過濾的顏色高值(紅色)

mask = cv.inrange(hsv, lowerb=lower_hsv, upperb=upper_hsv) # 二值影象

c = cv.waitkey(40)

if c == 27:

break

該函式使用效果

的通道分離和通道合併

src = cv.imread("c:/users/admin/desktop/14.png")  # 開啟一張

cv.namedwindow("input image", cv.window_autosize) # 設定尺寸,自動

cv.imshow("input image", src) # 顯示分離前的影象

b, g, r = cv.split(src) # 分離通道

cv.imshow("blue", b) # 顯示藍色通道

cv.imshow("green", g) # 顯示綠色通道

cv.imshow("red", r) # 顯示紅色通道

src = cv.merge([b, g, r]) # 通道合併

cv.imshow("changed image", src) # 顯示合併後的影象

cv.waitkey(0)

cv.destroyallwindows()

分離後的效果

合併後的效果

Open CV 色彩空間

顏色空間按照基本結構可以分兩大類 基色顏色空間 和 色 亮分離顏色空間。前者的典型是 rgb,還包括 cmy cmyk cie xyz 等 後者包括 ycc yuv lab 以及一批 色相類顏色空間 cie xyz 是定義一切顏色空間的基準,很奇妙的是,它即屬於基色顏色空間,也屬於色 亮分離顏色空間...

opencv空間色彩轉換

opencv中空間色彩轉換函式為 cvtcolor 提供不同空間的色彩轉換,如將rgb三通道轉換成單通道灰度圖等,其api如下 void cv cvtcolor inputarray src,outputarray dst,int code,int dstcn 0 python版本api為 dst ...

opencv常用色彩空間

1 r red 紅 g green 綠 b blue 藍 2 色光三原色 rgb 吸收倆種,反射自身顏色 在螢幕上顯示的影象,就是rgb模式表現的。3 rgb的每個元素在計算機記憶體中占用1個位元組 8bit 所以rgb每個元素的取值範圍為 0 255 2的8次方 4 我們常用的jpg格式的就是三通...