您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++ OpenCV怎么使用InRange對(duì)HSV顏色進(jìn)行分割”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++ OpenCV怎么使用InRange對(duì)HSV顏色進(jìn)行分割”吧!
API函數(shù)
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
官方文檔中的解釋:檢查數(shù)組元素是否在另外兩個(gè)數(shù)組元素值之間。這里的數(shù)組通常也就是矩陣Mat或向量。請(qǐng)注意:該函數(shù)輸出的dst是一幅二值化之后的圖像。
使用示例1:針對(duì)單通道圖像
dst(I) = lowerb(I)0 ≤ src(I)0 < upperb(I)0
即,如果一幅灰度圖像的某個(gè)像素的灰度值在指定的高、低閾值范圍之內(nèi),則在dst圖像中令該像素值為255,否則令其為0,這樣就生成了一幅二值化的輸出圖像。
使用示例2:針對(duì)三通道圖像
dst(I) = lowerb(I)0 ≤ src(I)0 < upperb(I)0 ∧ lowerb(I)1 ≤ src(I)1 < upperb(I)1 ∧lowerb(I)2 ≤ src(I)2 < upperb(I)2
即,每個(gè)通道的像素值都必須在規(guī)定的閾值范圍內(nèi)!
代碼演示
我們?cè)傩陆ㄒ粋€(gè)項(xiàng)目名為opencv--video2,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
我這里提前錄了一個(gè)test6.mp4的視頻,我們這里運(yùn)行一下這個(gè)程序看看原始視頻。
從視頻中我們看到,里面我拿了一個(gè)藍(lán)色的按摩器來(lái)鏡頭里來(lái)回晃動(dòng)。
下面我們就通過(guò)InRange的函數(shù)把藍(lán)色提取出來(lái)進(jìn)行分割。在《》一篇中的顏色HSV的表格中我們可以看到藍(lán)色的H范圍在100-124之間,S的范圍在43-255之間,V的范圍在46-255之間,如下圖:
所以我們?cè)诖a中先把這兩個(gè)范圍值定義出來(lái)
然后我們?cè)谝曨l播放的時(shí)候需要對(duì)原始圖像轉(zhuǎn)換變HSV圖像,然后通過(guò)InRange把顏色分割后顯示出來(lái)
運(yùn)行后的效果就是文章開始的視頻,下面是視頻中的屏幕截圖
上面的視頻中我們可以看出來(lái),藍(lán)色的都已經(jīng)獲取下來(lái)了,說(shuō)一下重點(diǎn):
圖像必須先通過(guò)cvtColor轉(zhuǎn)換為HSV的圖像
定義的Scalar里的三個(gè)數(shù)值就是以H,S,V的參數(shù)設(shè)置的
感謝各位的閱讀,以上就是“C++ OpenCV怎么使用InRange對(duì)HSV顏色進(jìn)行分割”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++ OpenCV怎么使用InRange對(duì)HSV顏色進(jìn)行分割這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。