无法在OpenCV中抓取框架

时间:2013-11-11 04:04:39

标签: c++ macos opencv webcam

我一直试图让openCV从我电脑的网络摄像头中读取图像。以下代码成功打开网络摄像头(绿灯亮起)。但是,尝试抓取帧并因此读取帧失败。我在这里不知所措。有人可以帮忙吗?

非常感谢, 希拉里

P.S。我在MacBook Pro上运行Mac OS X 10.9。我的opencv版本是2.4.6.1

以下是代码:

#include "opencv.hpp"
using namespace cv;

int main(int, char**) {

    VideoCapture cap = VideoCapture(0); 

    if(!cap.isOpened()){
       printf("failed to open camera\n");
       return -1;
    }

    namedWindow("edges",1);

    for(;;){
        if(waitKey(50) >= 0 ) break;

        if(!cap.grab()){
            printf("failed to grab from camera\n");
        }
    } 

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您忘记在循环中阅读新框架并显示它们!有:

for(;;){
    if(waitKey(50) >= 0 ) break;
    Mat frame;
    if(!cap.grab()){
        printf("failed to grab from camera\n");
        break;
    }
    cap >> frame; 

    if(frame.empty()){
        printf("failed to grab from camera\n");
        break;
    }

    imshow("edges", frame);
}