您好,登錄后才能下訂單哦!
這篇文章給大家介紹Camshift算法怎么在OpenCV項目中使用,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
前面學(xué)習(xí)過Meanshift算法,在觀察這個結(jié)果標(biāo)記時,會發(fā)現(xiàn)有這樣一個Camshift函數(shù)返回兩個值,第一個值ret是一個旋轉(zhuǎn)的窗口,第二個值是窗口搜索位置給下一次搜索使用的。例子如下:
import numpy as np import cv2 from matplotlib import pyplot as plt capture = cv2.VideoCapture(1) if not capture.isOpened: print('Unable to open: ') exit(0) #獲取第一幀圖片 ret,frame = capture.read() #設(shè)置目標(biāo)窗口 #讀取文件 find = cv2.imread('luohu1.png') h,w = find.shape[:2] roi = find[10: 120, 10: 120] x = 10 y = 10 width = 120 - x height = 120 - y track_window = (x, y, w, h) print(track_window) #跟蹤目標(biāo) 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],[0,180]) #計算直方圖 cv2.normalize(roi_hist,roi_hist,0,255,cv2.NORM_MINMAX) #設(shè)置迭代條件,每10移動一點 term_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ) while(1): ret, frame = capture.read() if ret == True: hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)#反向投影 #使用 meanshift獲得新位置 ret, track_window = cv2.CamShift(dst, track_window, term_crit) #顯示標(biāo)記 pts = cv2.boxPoints(ret) pts = np.int0(pts) img2 = cv2.polylines(frame,[pts],True, (255,0,0),2) cv2.imshow('img2',img2) cv2.imshow("dst", dst) cv2.imshow("roi", roi) keyboard = cv2.waitKey(1) if keyboard == ord('q') or keyboard == ord('Q'): break else: break capture.release() cv2.destroyAllWindows()
關(guān)于Camshift算法怎么在OpenCV項目中使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。