检测实时视频上的冲浪点

Detecting SURF points on real time video

本文关键字:实时视频 检测      更新时间:2023-10-16

我希望在实时视频源中检测 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()将其应用于视频提要?

网络摄像头抓取的帧只不过是一张图像。因此,无论您可以对单个图像执行什么操作,都可以使用相同的方法在该帧上执行相同的操作。

以下是您在无限for loop中通过网络摄像头接收frame的代码。基本上,您只需要读取框架,然后执行与单个图像相同的操作。

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.
}