在实时视频上检测 SURF 点
Detecting SURF points on real time video
我想检测实时视频源中的 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.
}
我想检测实时视频源中的 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.
}