Как отслеживать большой двоичный объект с помощью OpenCV и Python

Я получил OpenCV, работающий с Python, и я даже могу обнаружить лицо через свою веб-камеру. Что я действительно хочу сделать, так это увидеть движение и найти точку в середине пятна движения. Образец camshift близок к тому, что я хочу, но я не хочу выбирать, какую часть видео отслеживать. Бонусные баллы за возможность предсказать следующий кадр.

Вот код, который у меня есть сейчас:

#!/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()

person Matt Williamson    schedule 30.07.2010    source источник
comment
просто идет по слизистому следу :D   -  person rownage    schedule 30.07.2010
comment
Даже пример на C++ был бы полезен, так как документацию очень сложно понять.   -  person Matt Williamson    schedule 30.07.2010
comment
Также см. Simpler'ized: stackoverflow.com/questions/3374828/   -  person rlb.usa    schedule 30.07.2010


Ответы (1)


Нашел решение по адресу Как отслеживать движение с помощью OpenCV в Python?

person Matt Williamson    schedule 02.08.2010
comment
Видео об этом есть на appdelegateinc.com/ blog/2010/08/02/ тоже - person Matt Williamson; 03.08.2010