上篇文章我們說了有關色彩的問題,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...