OpenCV无法打开相机

时间:2015-09-28 11:36:22

标签: c++ macos opencv camera

我有一个OpenCV程序应该使用网络摄像头(在这种情况下是内置的笔记本电脑摄像头)。该程序编译正常,没有错误,但当我运行它时程序似乎挂起了线:

img_scene = cvCaptureFromCAM(0);

我有一个不同的程序以相同的方式访问相机,所以我不明白为什么这个程序似乎有麻烦。

非工作程序的完整捕获代码:

Mat captureThread() {
  if(captureOpen == false){
    img_scene = cvCaptureFromCAM(0);
    cvSetCaptureProperty(img_scene, CV_CAP_PROP_FRAME_WIDTH, 640);
    cvSetCaptureProperty(img_scene, CV_CAP_PROP_FRAME_HEIGHT, 480);
  }
  while(1) {
    image = cvQueryFrame(img_scene);
    if(image.empty()) {
      continue;
    }
    cvtColor(image, gray, CV_BGR2GRAY);
    return gray;
  }
}

这是在正常工作的其他程序中使用的代码:

  img_scene = cvCaptureFromCAM(0);
  cvSetCaptureProperty(img_scene, CV_CAP_PROP_FRAME_WIDTH, 640);
  cvSetCaptureProperty(img_scene, CV_CAP_PROP_FRAME_HEIGHT, 480);
  while(1) {
    imageFrame = cvQueryFrame(img_scene);
    if(imageFrame.empty()) {
      continue;
      cout << "image frame is empty" << endl;
    }
    cvtColor(imageFrame, gray, CV_BGR2GRAY);

是什么原因导致非工作程序无法访问相机?我也尝试插入USB摄像头并设置cvCaptureFromCam(-1),但它也不起作用。

编辑: 非工作程序使用多个线程,而工作程序则不使用。

0 个答案:

没有答案