2017-08-09 51 views
0

我正在關注this鏈接,解決了problem of mine。在第一個鏈接中提到,我們可以創建一個「蒙版」,如果下一個對象非常接近那個「蒙版」,我們將不會檢測到它,因爲它可能是同一個對象。但是如果它有距離,我們應該檢測它,然後追蹤到最後。通過掩碼標記檢測到的對象

但我沒有得到如何創建掩碼並使用條件語句排除它。所以,第一個創建面具的問題。如果我可以創建對象的蒙版,那麼我可以嘗試從下一個檢測中排除它。

import cv2 
import numpy as np 

cap = cv2.VideoCapture('anyvideo.mp4') 

while(1): 

    # Take each frame 
    ret, frame = cap.read() 

    if ret: 

     # detect the object and get contour of the image. I'm calling it bbox 

     tracker = cv2.Tracker_create("KCF") 
     ok = tracker.init(frame, tuple(bbox)) 
     ok, bbox = tracker.update(frame) 
     p1 = (int(bbox[0]), int(bbox[1])) 
     p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3])) 
     cv2.rectangle(frame, p1, p2, (0,0,255)) 
     cv2.putText(frame, 'Tracked', (x + 25,y + 10), cv2.FONT_HERSHEY_SIMPLEX,1, (255,255,255), 2, cv2.LINE_AA) 
     mask = np.full((frame.shape[0], frame.shape[1]), 0, dtype=np.uint8) 
     res = res.append(cv2.bitwise_and(frame,frame,mask = mask)) 


     k = cv2.waitKey(5) & 0xFF 
     if k == 27: 
      break 
    else: 
     break 
cap.release() 
cv2.destroyAllWindows() 

謝謝!

回答

0

首先,拍攝參考的圖像,沒有物體,背景相同。然後減去其中存在對象的圖像。它會給你一些價值,期望爲零,目標出現在哪裏。執行二進制閾值就可以了。現在你會擁有這個物體。使用它作爲面膜

+0

感謝您的回答。我已經創建了面具並相應地更新了代碼。現在我怎樣才能使用它作爲過濾器去除已經跟蹤的圖像。 – arijit

+0

正如我之前提出的那樣,「對它執行二進制閾值」,在此之後,可以對其進行輪廓處理。計算它的質量中心並裁剪物體的適當區域。通過質量中心,您可以計算相對位置。算法的其餘部分取決於你自己的邏輯。您可以使用任何算法或您自己的邏輯來跟蹤對象。 – Akhilesh

+0

@arijit,如果你需要任何幫助,你可以問。如果你發現這個答案有幫助,並投票選擇答案。 – Akhilesh