opencv學習之色彩提取與色彩空間

2021-10-09 17:24:05 字數 2306 閱讀 1763

上篇文章我們說了有關色彩的問題,rgb只是一種色彩空間,除了它之外我們還有很多色彩空間,這篇重點說一下色彩空間的轉換以及在hsv色彩空間中對於顏色的提取。我們先來看**:

import cv2 as cv

import numpy as np

#建議先跳過這個函式去看下面的色彩空間轉換函式,看完了再回過頭看這個函式

defextrace_object_demo()

: capture=cv.videocapture(

"1269942405.mp4"

)while

(true):

ret,frame=capture.read(

)if ret==

false

:break

hsv=cv.cvtcolor(frame,cv.color_bgr2hsv)

#轉換為hsv色彩空間

lower_hsv=np.array([0

,0,0

])higher_hsv=np.array(

[180

,255,46

])#給定兩組閾值,這兩組閾值可以限制出乙個顏色來,比如我這裡限制的是黑色

mask=cv.inrange(hsv,lowerb=lower_hsv,upperb=higher_hsv)

#上面就用到了那兩個閾值,我們根據這兩個閾值劃出了黑色

cv.imshow(

"video"

,frame)

#顯示原影象

cv.imshow(

"mask"

,mask)

c=cv.waitkey(40)

if c==27:

break

defcolor_space_demo

(image)

:#opencv提供的api可以方便的進行色彩空間的轉換

gray=cv.cvtcolor(image,cv.color_bgr2gray)

#變成灰度值影象,這個上篇中講過

cv.imshow(

"gray"

,gray)

hsv=cv.cvtcolor(image,cv.color_bgr2hsv)

#變成hsv影象

cv.imshow(

"hsv"

,hsv)

#h:0-180 s:0-255 v:0-255

yuv=cv.cvtcolor(image,cv.color_bgr2yuv)

#變成yuv影象

cv.imshow(

"yuv"

,yuv)

ycrcb=cv.cvtcolor(image,cv.color_bgr2ycrcb)

#變成ycrcb影象

cv.imshow(

"ycrcb"

,ycrcb)

src=cv.imread(r"c:\users\dell\desktop\tim20180421221302.png"

)cv.namedwindow(

"impot image"

,cv.window_autosize)

b,g,r=cv.split(src)

cv.imshow(

"blue"

,b)cv.imshow(

"green"

,g)cv.imshow(

"red"

,r)#分割顏色,這個不是重點,要配合下面一起

src=cv.merge(

[b,g,r]

)#把顏色組合到一起

src[:,

:,0]

=0#給這一列賦值

cv.imshow(

"changed image"

,src)

#最終這裡會得到乙個根據上一行賦值不同而不同的影象

extrace_object_demo(

)#影象函式

#cv.imshow("input image",src)

cv.waitkey(0)

cv.destroyallwindows(

)

**就分析這麼多,然後還有一點,就是上面的那個提取影象中的顏色,閾值是這樣的:

也就是說我們只需要給出這個表上的閾值,就可以提取出相應的顏色,然後填的方式是那個lower裡面就填min裡面的,也就是填這一列中最小的三個,然後higher中填的就是這一列中最大的三個,其實也就是其他三個,但是要一一對應,就是這個min要對應它下面的max

opencv學習(四) 色彩空間轉換

如下 匯入cv模組 h 0 180 s 0 255 v 0 255 import cv2 as cv import numpy as np def extrace object demo capture cv.videocapture f projects images video demo.wmv...

OpenCV 04色彩空間

色彩空間 它的用途是在某些標準下用通常可接受的方式對彩色加以說明。本質上,彩色模型是座標系統和子空間的闡述。位於系統的每種顏色都有單個點表示。關於hsv的問題 在hsv中,h實際取值範圍是從0到360的,但是在opencv中h的取值範圍是從0到180 原因 因為v和s都是0到255,當我們用uint...

open cv2學習(三) 色彩空間

在色彩學中,人們建立了多種色彩模型,以一維 二維 三維甚至四維空間座標來表示 某一色彩,這種座標系統所能定義的色彩範圍即色彩空間rgb red,green,blue r g b 取值範圍都為0 255 sv hue,saturation,value h 0 180 s 0 255 v 0 255 h...