我希望在实时视频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?
答案 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.
}