1

我在处理 OpenCV 库时遇到了困难:

http://ubaa.net/shared/processing/opencv/index.html

我正在运行绝对最基本的示例代码:

import hypermedia.video.*;

OpenCV opencv;

void setup ()
{
    opencv = new OpenCV( this );
    opencv.capture( width, height );
}

void draw ()
{
    opencv.read();
    background( opencv.image() );
}

但每次,我都会收到控制台消息:

SGIdle failed in icvGrabFrame_QT_Cam with error -1

并且没有视频输入。我的网络摄像头打开,但程序挂起。

我在网上看到其他人遇到这个问题,但是我没有找到一个单一的来源。我感觉它与 QuickTime 的视频捕获有关,但我不确定。

系统信息:

  • 最近配备 iSight 摄像头的 MacBook Pro
  • OS X 10.7.3(狮子)
  • 快速时间 10.1
  • 开放CV 1.1
  • 处理 1.5.1

有谁知道发生了什么?当库的最基本功能不起作用时,很难进入实际项目......

4

2 回答 2

2

使用视频库做一个变通方法并将视频帧复制到 openCV 层:http ://habu.phpfogapp.com/?p=3

于 2012-10-17T16:34:12.050 回答
0

这是使用标准库捕获图像的解决方法示例

// OpenCV cannot capture anymore since a iTunes or QuickTime update.
// It returns this error:
// SGIdle failed in icvGrabFrame_QT_Cam with error -1
// This example shows how to use standard video library to capture then
// pass the image to OpenCV.
//
// Pierre Rossel
// 25.2.2013


import hypermedia.video.*;
import processing.video.*;

OpenCV opencv;
Capture video;
int captureW = 640;
int captureH = 480;

void setup ()
{
  size(captureW, captureH);

  opencv = new OpenCV( this );
  opencv.allocate(captureW, captureH);
  opencv.threshold(255); // Clears allocated image

  video = new Capture(this, captureW, captureH);
  video.start();
}

void draw ()
{
  if (video.available()) {
    video.read();
    opencv.copy(video);
  }

  background( opencv.image() );
}
于 2013-02-25T09:23:09.950 回答