2010-07-30 8 views
4

OpenCV에서 Python을 사용하고 있으며 웹캠을 통해 얼굴을 감지 할 수도 있습니다. 내가 정말로하고 싶은 것은 움직임을보고 움직임의 한가운데서 그 지점을 발견합니다. 캠 샤프트 샘플은 내가 원하는 것과 가깝지만 추적 할 비디오 부분을 선택하지 않아도됩니다. 다음 프레임을 예측할 수있는 보너스 포인트.OpenCV 및 Python을 사용하여 BLOB를 추적하는 방법

#!/usr/bin/env python 

import cv 

def is_rect_nonzero(r): 
    (_,_,w,h) = r 
    return (w > 0) and (h > 0) 

class CamShiftDemo: 

    def __init__(self): 
     self.capture = cv.CaptureFromCAM(0) 
     cv.NamedWindow("CamShiftDemo", 1) 
     self.storage = cv.CreateMemStorage(0) 
     self.cascade = cv.Load("/usr/local/share/opencv/haarcascades/haarcascade_mcs_upperbody.xml") 
     self.last_rect = ((0, 0), (0, 0)) 

    def run(self): 
     hist = cv.CreateHist([180], cv.CV_HIST_ARRAY, [(0,180)], 1) 
     backproject_mode = False 
     i = 0 
     while True: 
      i = (i + 1) % 12 

      frame = cv.QueryFrame(self.capture) 

      if i == 0: 
       found = cv.HaarDetectObjects(frame, self.cascade, self.storage, 1.2, 2, 0, (20, 20)) 
       for p in found: 
        # print p 
        self.last_rect = (p[0][0], p[0][1]), (p[0][2], p[0][3]) 
        print self.last_rect 

      cv.Rectangle(frame, self.last_rect[0], self.last_rect[1], cv.CV_RGB(255,0,0), 3, cv.CV_AA, 0) 
      cv.ShowImage("CamShiftDemo", frame) 

      c = cv.WaitKey(7) % 0x100 
      if c == 27: 
       break 

if __name__=="__main__": 
    demo = CamShiftDemo() 
    demo.run() 
+1

단지의 점액 흔적 다음에서 해결책을 찾을 수 없습니다 : 심지어 C++ 예제가 도움이 될 것입니다 D – rownage

+0

을, 워드 프로세서는 따라하기가 매우 어려운 여기

내가 현재 가지고있는 코드입니다 . –

+1

더보기 simpleerized : http://stackoverflow.com/questions/3374828/how-do-i-track-motion-using-opencv-in-python –

답변

관련 문제