【问题标题】:Detecting SURF points on real time video在实时视频中检测 SURF 点
【发布时间】:2015-01-08 16:24:41
【问题描述】:

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

【问题讨论】:

  • 好吧,比起连续问三个问题,更彻底地研究参考文档(或获得关于 SURF 点主题的好教程)怎么样?
  • 了解如何阅读直播您将获得的只是您可以像在示例代码中那样处理的每张图片。
  • 我目前可以在直播中阅读,所以我是否只将每一帧视为单独的图像?
  • 由于视频只是一系列图像,因此只需从视频帧序列中抓取图像并单独或每 10 个或任何您想要的处理它们。

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


【解决方案1】:

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

以下是您通过网络摄像头在无限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.

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多