2015-01-08 4 views
0

Я ищу для определения точек объекта SURF в живой видеоролике, однако я не могу найти никаких учебных пособий о том, как достичь этого.Обнаружение точек SURF на видео в реальном времени

Я в состоянии обнаружить их на неподвижные изображения:

int minHessian = 400; 
    cv::SurfFeatureDetector detector(minHessian); 
    std::vector<cv::KeyPoint> keypoints_1; 
    detector.detect(img_1, keypoints_1); 
    cv::Mat img_keypoints_1; 
    drawKeypoints(img_1, keypoints_1, img_keypoints_1); 

Но я не знаю, как вы применить это к видеосопровождением с использованием cvCaptureFromCAM()?

+0

Ну, а как насчет изучения справочной документации немного более основательно (или получить хороший учебник по теме точки SURF), чем задавать вопросы об этом подряд? –

+0

Узнайте, как читать livestream, что вы получите, это просто одно изображение, которое вы можете обрабатывать так же, как и в своем примере кода. – Micka

+0

Я в настоящее время могу читать в прямом эфире, так что я просто рассматриваю каждый кадр как отдельный образ? – Colin747

ответ

0

Рамка, захваченная вашей веб-камерой, представляет собой не что иное, как одно изображение. Поэтому, что бы вы ни делали с вашим единственным изображением, вы можете сделать то же самое на этом фрейме, используя тот же метод.

Ниже приведен код, в котором вы получите frame через свою веб-камеру в беспредельном for loop. В принципе, вам просто нужно прочитать фрейм, а затем сделать то же самое, что и на одном изображении.

Mat frame; 
VideoCapture cap(0); // open the default camera 
if (!cap.isOpened()) // check if we succeeded 
    return -1; 

for (;;) 
{ 

    cap.read(frame); // get a new frame from camera 
    if (frame.empty()) continue; 

    //Now do the same thing with each frame which you did with your single image. 

} 
+0

Это сработало сразу, спасибо. – Colin747