c++ - Opencv 从网络摄像头捕获的连续帧

标签 c++ opencv webcam video-capture opticalflow

我正在使用 Opencv (C++) 开发实时光流应用程序。 我不明白如何捕获两个连续的帧来应用 Lucas-Kanade 跟踪方法。

这行不通:

CvCapture* capture = cvCaptureFromCAM(1);
IplImage *imgA=cvQueryFrame( capture );
IplImage *imgB=cvQueryFrame( capture );

这个我也试过,但是程序没有退出循环:

CvCapture* capture = cvCaptureFromCAM(1);
IplImage *imgA=cvQueryFrame( capture );
IplImage *imgB=cvCreateImage(cvSize(imgA),IPL_DEPTH_32F,3);
while(cvNorm(imgA,imgB)==0)
    imgB=cvQueryFrame( capture );

有什么想法吗?我希望这不是一个愚蠢的问题,但我怀疑它是:/提前抱歉。 谢谢!!

最佳答案

cv::Mat m1, m2;
cv::VideoCapture cap(0);

if(!cap.isOpened())
    ;// ... throw error here

cap >> m1;
cap >> m2;

// m1 and m2 now contain consecutive frames.

关于c++ - Opencv 从网络摄像头捕获的连续帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829385/

相关文章:

c++ - 在 std::vector 和 std::unordered_map 之间进行选择以在少数项目中进行搜索?

python - 无法在 mac 上的 python 中使用 opencv 读取 xvid 视频

python - 从 SIFT BF-Match 的多个图像中找到最匹配的图像

python - 使用图片时出现ValueError == None

java网络摄像头调整快门速度

javascript - 在nodejs中使用cv.readImage()和流

c++ - gcc 的 boost::variant 链接器错误

c++ - 在 C++ 中将 long long 转换为十六进制和二进制

c++ - 二维 vector 大小

android - 从适用于 Android 的 FFMPEG 命令行版本访问网络摄像头麦克风