目錄:
先總結(jié):
色彩空間種類(lèi)和定義的理論掌握
轉(zhuǎn)換方法:XXX = cv.cvtColor(image, cv.COLOR_BGR2XXX)
調(diào)用opencv內(nèi)部函數(shù)都屬于調(diào)用他的API接口
視頻輸入讀茸辉: capture = cv.VideoCapture(“ ”)
ret, frame = capture.read()
第一個(gè)參數(shù)ret 為T(mén)rue 或者False,代表有沒(méi)有讀取到圖片, ret是布爾值,如果讀取幀是正確的則返回True夸赫,如果文件讀取到結(jié)尾聊品,它的返回值就為False汰具。
第二個(gè)參數(shù)frame表示截取到一幀的圖片,frame就是每一幀的圖像卢佣,是個(gè)三維矩陣.
通過(guò)hsv來(lái)追蹤顏色:
?????????hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
????????lower_hsv = np.array([0,0,221])
????????upper_hsv = np.array([180,30,255])
????????# 這里追蹤白色房揭,得到的是一個(gè)二值圖像
????????mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)
通道分割與合并:
分割:r, g, b = cv.split(src)
單獨(dú)修改某個(gè)通道:src[ :, :, 0/1/2 ] = 0/?
合并:cv.merge( [r, g, b] )?
4.1 定義及空間種類(lèi)
純黑:0 0 0
純白:255, 255, 255
三原色:紅袜硫、綠氯葬、藍(lán),這三種光波是自然界所有顏色的基礎(chǔ)婉陷,任何顏色都可以由這三種顏色混合而來(lái)帚称。
每種顏色按亮度分為0~255共256個(gè)等級(jí)(不了解亮度可以看第一節(jié)),0表示亮度為0%秽澳,255表示亮度為100%闯睹,這是我們首先要知道的,數(shù)值表示的是顏色的亮度担神。
三種顏色的不同亮度相互組合成立大千世界楼吃,這些數(shù)值可以表示256*256*256=1678萬(wàn)中顏色,對(duì)于電腦再現(xiàn)大千世界綽綽有余了妄讯。但為什么是255呢孩锡,這關(guān)于到色彩位數(shù)2^8=256,,表示這是8位色彩深度亥贸,色彩深度是計(jì)算機(jī)圖形學(xué)領(lǐng)域表示在位圖或者視頻幀緩沖區(qū)中儲(chǔ)存1像素的顏色所用的位數(shù)躬窜,位數(shù)越多,能表示的顏色越多炕置。
HSV:
H:hue 色調(diào)
為什么還要用HSV來(lái)表示荣挨?因?yàn)镠SV在差異性很大的色彩中很好用,他能很大的突出途中某些很突出的顏色
HSV: H: 0-360. SV:0-255.
但是實(shí)際中opencv H是0-180讹俊, 因?yàn)槠渌际?-255, 所以用uint8 垦沉, 2的8次就可以表示,但是要是到360的話(huà)就會(huì)溢出仍劈。所以縮小取值范圍讓它滿(mǎn)足取值范圍厕倍。
HIS:I:intensive 灰度級(jí)別。S:Saturation 飽和度
YCrCb:多用于檢測(cè)皮膚
YUV:Android開(kāi)發(fā)贩疙。
4.2 RGB轉(zhuǎn)化為其他:
重點(diǎn):RGB —— HSV6锿洹?黾取!组民!
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
………………...
上面表格中在色彩空間里面都特別容易區(qū)分棒仍,所以我們用 inRange 來(lái)區(qū)分,能直接把這些顏色的HSV值提取出來(lái)臭胜。
比如某個(gè)像素點(diǎn) 他的坐標(biāo)都位于 黑色的HSV 區(qū)域莫其,那么這個(gè)像素點(diǎn)一定是黑色。
這個(gè)表格是經(jīng)驗(yàn)總結(jié)表耸三,很重要:B叶浮!R亲场憨颠!
比如你想提取圖中所有黃色點(diǎn),那么滿(mǎn)足 h [26, 34], s [43, 255], v[46, 255] 這三個(gè)要求的所有點(diǎn)都可以提取為黃色积锅。上面三個(gè)通道爽彤,最大值最小值總6個(gè)值,就可以過(guò)濾出所有黃色的點(diǎn)了缚陷。
做顏色物體跟蹤的關(guān)鍵J矢荨!
4.3 通過(guò)hsv追蹤顏色(cv.irange(hsv, 下限蹬跃,上限))
通過(guò)hsv追蹤的最后都是二值圖匙瘪,你追蹤的顏色就是白色,沒(méi)追蹤的全部為黑色蝶缀。
這里牢牢的追蹤了白色丹喻。
4.4 通道的分割與合并
cv2.split函數(shù)分離得到各個(gè)通道的灰度值(單通道圖像)。
改變某個(gè)單獨(dú)通道的值:
通過(guò)merge()來(lái)合并:
cv2.merge函數(shù)是合并單通道成多通道(不能合并多個(gè)多通道圖像)翁都。