在实时视频上检测SURF点

时间:2015-01-08 16:24:42

标签: c++ opencv video real-time surf

我希望在实时视频Feed中检测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()的视频Feed?

1 个答案:

答案 0 :(得分: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.

}