2010-07-12 123 views
1

如何在MacOS X中过滤来自摄像头的视频流。我编写了quicktime序列捕获器通道组件,但只有在应用程序使用SG API时才能使用。如果应用程序使用QTKit Capture,则该组件不起作用。在Mac OS X中捕获摄像头中的视频

有人知道我可以如何实现它吗?

回答

4

你可以使用OpenCV进行视频处理,这是一个跨平台的图像/视频处理库:http://opencv.willowgarage.com

您的代码将是这个样子:

CvCapture* capture = NULL; 
if ((capture = cvCaptureFromCAM(-1)) == NULL) 
{ 
    std::cerr << "!!! ERROR: vCaptureFromCAM No camera found\n"; 
    return -1; 
} 

cvNamedWindow("webcam", CV_WINDOW_AUTOSIZE); 
cvMoveWindow("webcam", 50, 50); 

cvQueryFrame(capture); 

IplImage* src = NULL; 
for (;;) 
{ 
    if ((src = cvQueryFrame(capture)) == NULL) 
    { 
      std::cerr << "!!! ERROR: vQueryFrame\n"; 
     break; 
    } 

    // perform processing on src->imageData 

    cvShowImage("webcam", &src); 

    char key_pressed = cvWaitKey(2); 

    if (key_pressed == 27) 
     break; 
} 

cvReleaseCapture(&camera); 

我在Mac OS上使用OpenCV的成功X使用cvCaptureFromCAM(0)而不是传递它-1。在Linux上,-1似乎确实。

1

看起来最后应该有cvReleaseCapture(&capture);