-
大小: 4KB文件類型: .zip金幣: 2下載: 1 次發布日期: 2021-05-11
- 語言: Python
- 標簽: python;??opencv;??meanshift;??識別跟蹤??
資源簡介
本程序是基于python+opencv下運用meanshift算法對視頻中選中目標進行自動識別跟蹤,針對第一幀圖像進行了特殊處理,具體請見代碼。環境為python2.7+opencv2

代碼片段和文件信息
#?encoding:?utf-8
import?numpy?as?np
import?cv2
current_pos?=?None
tl?=?None
br?=?None
#鼠標事件
def?get_rect(im?title=‘img1‘):
????mouse_params?=?{‘tl‘:?None?‘br‘:?None?‘current_pos‘:?None‘released_once‘:?False}
????cv2.namedWindow(title)
????cv2.moveWindow(title?100?0)??#啟動后初始窗口的位置
????def?onMouse(event?x?y?flags?param):
????????param[‘current_pos‘]?=?(x?y)
????????if?param[‘tl‘]?is?not?None?and?not?(flags?&?cv2.EVENT_FLAG_LBUTTON):
????????????param[‘released_once‘]?=?True
????????if?flags?&?cv2.EVENT_FLAG_LBUTTON:
????????????if?param[‘tl‘]?is?None:
????????????????param[‘tl‘]?=?param[‘current_pos‘]
????????????elif?param[‘released_once‘]:
????????????????param[‘br‘]?=?param[‘current_pos‘]
????????????#??tl記錄起始位置,br記錄最終位置
????cv2.setMouseCallback(title?onMouse?mouse_params)
????cv2.imshow(title?im)
????while?mouse_params[‘br‘]?is?None:
????????im_draw?=?np.copy(im)
????????if?mouse_params[‘tl‘]?is?not?None:
????????????cv2.rectangle(im_draw?mouse_params[‘tl‘]
????????????????mouse_params[‘current_pos‘]?(255?0?0))
??????#此while循環條件為沒有第二次按下,然后不斷隨鼠標移動畫矩形
????????cv2.imshow(title?im_draw)
????????_?=?cv2.waitKey(10)
????cv2.destroyWindow(title)
????tl?=?(min(mouse_params[‘tl‘][0]?mouse_params[‘br‘][0])
????????min(mouse_params[‘tl‘][1]?mouse_params[‘br‘][1]))
????br?=?(max(mouse_params[‘tl‘][0]?mouse_params[‘br‘][0])
????????max(mouse_params[‘tl‘][1]?mouse_params[‘br‘][1]))
????#?t1表示矩形左上角的點,t2表示右下角的點
????#print?mouse_params[‘tl‘]mouse_params[‘br‘]
????return?(tl?br)
def?xuanze(frame):
????????a1a2?=?get_rect(frame?title=‘img1‘)?#手動選框
????????rhcw?=?a1[1]a2[1]-a1[1]a1[0]a2[0]-a1[0]?#手動選框
????????track_window?=?(crwh)
????????#?設置所要跟蹤的ROI
????????roi?=?frame[r:r+h?c:c+w]
????????hsv_roi?=??cv2.cvtColor(roi?cv2.COLOR_BGR2HSV)
????????mask?=?cv2.inRange(hsv_roi?np.array((0.?60.32.))?np.array((180.255.255.)))
????????roi_hist?=?cv2.calcHist([hsv_roi][0]mask[180][0180])
????????cv2.normalize(roi_histroi_hist0255cv2.NORM_MINMAX)
????????while(1):
????????????ret?frame?=?cap.read()
????????????hsv?=?cv2.cvtColor(frame?cv2.COLOR_BGR2HSV)
????????????dst?=?cv2.calcBackProject([hsv][0]roi_hist[0180]1)
????????????term_crit?=?(?cv2.TERM_CRITERIA_EPS?|?cv2.TERM_CRITERIA_COUNT?10?1?)
????????????#?apply?meanshift?to?get?the?new?location
????????????ret?track_window?=?cv2.meanShift(dst?track_window?term_crit)
????????????#?Draw?it?on?image
????????????xywh?=?track_window
????????????cv2.rectangle(frame?(xy)?(x+wy+h)?2552)
????????????cv2.namedWindow(‘img2‘)
????????????cv2.moveWindow(‘img2‘?100?0)???#控制播放窗口位于屏幕中間
????????????cv2.waitKey(30)
????????????cv2.imshow(‘img2‘frame)
????????????cv2.destroyWindow(‘video‘)
????????????k?=?cv2.waitKey(10)?&?0xff
????????????if?k?==?27:
????????????????break
cap?=?cv2.VideoCapture(‘yundong1.mp4‘)
cv2.namedWindow(“video“)
cv2.moveWindow(“video“?10
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4511??2018-01-09?21:38??鼠標選擇跟蹤.py
?????文件????????4372??2018-01-09?21:37??python目標跟蹤(鼠標).txt
評論
共有 條評論