Color Tracking by OpenCV-python

最近台猴,初學OpenCV-python朽合,參考資料,做了一個簡單的基于顏色識別的學生證追蹤程序卿吐,與大家分享如下:

?程序主要由三部分構成:

一旁舰,攝像頭的初始化與采集圖像

?二,圖像處理算法

?三嗡官,錄制視頻

程序如下:

(1)打開我的PyScripter編輯器,導入一些必要的包:cv2 是 Opencv 包毯焕;numpy 是 矩陣運算相關的包

>>>import cv2

>>>import numpy as np

(2)開啟攝像頭并配置好相關參數(shù)衍腥,為圖像的采集與保存做準備

>>>cap = cv2.VideoCapture(0)

>>>fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")

>>>out = cv2.VideoWriter( 'StudentID_Tracking.avi', fourcc, ?20, ?(640,480) ?)

做好準備工作后,開始進入正題纳猫,即一個實時跟蹤顏色并顯示的大循環(huán)婆咸。我們嘗試著用 OpenCV 包中的 cv2.inRange() 函數(shù)來識別hsv空間下的指定顏色芜辕。該函數(shù)需要輸入三個參數(shù)尚骄。

參數(shù)1是待處理的圖像變量;

參數(shù)2是指定顏色的hsv下限值侵续;

參數(shù)3是指定顏色的hsv上限值倔丈;

函數(shù)返回值是處理后的二值圖像。

(對于HSV顏色空間與RGB顏色空間的相關知識状蜗,可以參考以下鏈接)

通過 cv2.cvtColor() 函數(shù)可以將指定圖像轉換到指定的顏色空間需五。該函數(shù)需要輸入兩個參數(shù)。

參數(shù)1是待處理的圖像變量轧坎;

參數(shù)2是指定轉換到相應的顏色空間宏邮;

函數(shù)返回值是轉換后的圖像變量。

原圖像與轉換后的圖像如下所示:

從兩幅圖像的對比結果上看,很顯然蜜氨,由于受到光線械筛,雜色等的影響,顏色識別的效果并不理想飒炎,那么埋哟,我們嘗試著用一些簡單的形態(tài)學處理方法來解決這個問題。

首先厌丑,我們可以嘗試先通過簡單的腐蝕運算來消除多余的細小的噪聲點定欧。

>>>mask = cv2.erode(mask, None, iterations=2)

接著,通過膨脹運算來消除各個分散區(qū)域之間的細小縫隙怒竿。

>>>mask = cv2.dilate(mask, None, iterations=7 )

最后砍鸠,再用簡單的腐蝕運算來盡可能的還原色塊的本來形狀和大小。

>>>mask = cv2.erode(mask, None, iterations=5)

以下是形態(tài)學方法處理前后的圖像對比:

當然耕驰,如果還有一種叫輪廓近似的方法爷辱,當你由于各種原因,所想要采集的圖像區(qū)域并不是一個規(guī)則的圖像朦肘,而存在著或多或少饭弓,或深或淺,或大或小的毛刺媒抠,那么可以嘗試用這種方法還原一個近似的規(guī)則形狀弟断。相關的函數(shù)有 cv2.approxPolyDP() ,有興趣的朋友可以嘗試一下趴生。

處理后的二值化圖像方便我們進行輪廓的提取阀趴。需要用到的函數(shù)是 cv2.findContours() 。該函數(shù)需要輸入三個參數(shù)苍匆。

參數(shù)1是待處理的圖像變量刘急;

參數(shù)2是指定輪廓的檢索模式;

參數(shù)3是指定輪廓的近似方法浸踩;

該函數(shù)返回兩個值叔汁,1是輪廓本身,2是每條輪廓對應的屬性检碗。

>>>cnts = cv2.findContours( mask.copy(), cv2.RETR_CCOMP,

cv2.CHAIN_APPROX_SIMPLE)[-2]

當識別到輪廓時据块,我們通過尋找最大的輪廓來消除噪聲干擾,以確保識別的準確性后裸。

>>>c = max( cnts, key = cv2.contourArea )

通過以下兩條語句瑰钮,計算所勾勒輪廓的質心。

>>>M = cv2.moments( c )

>>>center = ( int ( M[ "m10" ] / M[ "m00" ] ), int ( M[ "m01" ] / M[ "m00" ] ) )

在質心位置畫出一個藍色的實心圓點微驶。

>>>cv2.circle( background, center, 5, ( 255, 0, 0 ), -1 )

至此浪谴,我們已經完成了本程序最核心的部分开睡。

不要忘了,我們還要錄屏:

>>>out.write( background )

錄制出來的視頻在文末苟耻。

最后篇恒,我們仍需要再做一些收尾工作:通過按下鍵盤上的 ‘ q ’ 鍵退出大循環(huán)。

>>>key = cv2.waitKey(1) & 0xFF

>>> ? ? ? if key == ord("q"):

>>> ? ? ? ? ? ? ?break

同時要釋放攝像頭和銷毀窗口凶杖。

>>>cap.release()

>>>out.release()

>>>cv2.destroyAllWindows()

至此胁艰,一個基于顏色識別的學生證追蹤程序已經完成。

在編寫這個程序的過程中智蝠,我還編寫了兩個小工具腾么。主要可以幫助我們確定指定顏色區(qū)域的hsv值上限和hsv值下限。

下面分別介紹一下這兩個小工具:

(1)摳圖工具:運用此工具杈湾,再圖像界面上解虱,按下左鍵取起始點后松開,通過移動鼠標可以拉出一個矩形漆撞,按下右鍵后可以確定矩形的邊框殴泰,從而摳出一個指定的矩形區(qū)域,并返回該區(qū)域的hsv的上限值與下限值浮驳。

在該文件目錄下輸入以下兩行代碼悍汛,即可彈出圖像界面。

>>>import Detectcolor2hsv

>>>Detectcolor2hsv.detectcolor2hsv( 'opencvlogo.jpg' )

效果圖如下(左邊邊框內為截取的圖形至会,右邊為輸出結果):

(2)hsv畫板:玩一下此畫板离咐,可以加深你對hsv顏色空間的理解,同時奉件,也有利于確定hsv值健霹。

在該文件目錄下輸入以下兩行代碼,即可彈出畫板:

>>>import Color_palette_HSV

>>>Color_palette_HSV.color_palette_HSV()

效果圖如下:打開開關瓶蚂,滑動 H,S宣吱,V 三個滑條窃这,就可看到下方的顏色界面有明顯變化。如下圖所示(HSV為( 0征候, 255杭攻, 255)時,顏色為鮮紅色)疤坝,按下 ?‘ Esc ’ 鍵退出 :

當然這兩個只是小工具兆解,起到幫助作用,實際的顏色一般都需要試調跑揉。

這兩個小工具的代碼也比較簡單锅睛,我就不一一介紹埠巨。

以上都是我的拙見,如果有什么錯誤的地方或者改進的地方现拒,歡迎留言辣垒。

參考鏈接:http://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/

參考書籍:《opencv-python-tutroals》


StudentID_Tracking
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市印蔬,隨后出現(xiàn)的幾起案子勋桶,更是在濱河造成了極大的恐慌,老刑警劉巖侥猬,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件例驹,死亡現(xiàn)場離奇詭異,居然都是意外死亡退唠,警方通過查閱死者的電腦和手機鹃锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铜邮,“玉大人仪召,你說我怎么就攤上這事∷伤猓” “怎么了扔茅?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秸苗。 經常有香客問我召娜,道長,這世上最難降的妖魔是什么惊楼? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任玖瘸,我火速辦了婚禮,結果婚禮上檀咙,老公的妹妹穿的比我還像新娘雅倒。我一直安慰自己,他們只是感情好弧可,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布蔑匣。 她就那樣靜靜地躺著,像睡著了一般棕诵。 火紅的嫁衣襯著肌膚如雪裁良。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天校套,我揣著相機與錄音价脾,去河邊找鬼。 笑死笛匙,一個胖子當著我的面吹牛侨把,可吹牛的內容都是我干的犀变。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼座硕,長吁一口氣:“原來是場噩夢啊……” “哼弛作!你這毒婦竟也來了?” 一聲冷哼從身側響起华匾,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤映琳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜘拉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萨西,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年旭旭,在試婚紗的時候發(fā)現(xiàn)自己被綠了谎脯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡持寄,死狀恐怖源梭,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情稍味,我是刑警寧澤废麻,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站模庐,受9級特大地震影響烛愧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜掂碱,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一怜姿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疼燥,春花似錦沧卢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湃交,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藤巢,已是汗流浹背搞莺。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掂咒,地道東北人才沧。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓迈喉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親温圆。 傳聞我的和親對象是個殘疾皇子挨摸,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容