摄像机连接和断开接箍



大家好!我使用OpenCV与c++ API,为了使我的项目更可靠,我需要一个特定的相机连接断开处理。我搜索了"如何",但我只能找到需要一个丑陋的hack才能做到的答案。

你能建议一种更干净的方法吗?

感谢

检测相机连接/断开可能需要一些技巧。

我建议你启动另一个线程来检查cvCreateCameraCapture()在循环中的成功,而你的应用程序正在运行。

类似如下:

while (run_detection_thread) // global variable controlled by the main thread
{
  CvCapture* capture = cvCreateCameraCapture(-1); //-1 or whatever number works for you
  if (camera) //camera is connected
  {
    sleep(1);
  }
  else
  {
    // camera was disconnected        
  }
}

我认为我有一个很好的解决这个问题的方法。我创建了一个辅助Mat数组,与相机输出的分辨率相同。我将它分配给Mat数组,然后将从相机捕获的帧分配给Mat数组,最后检查该数组的规范。如果它等于零,则表示没有从相机捕获新的帧。

VideoCapture cap(0);
if(!cap.isOpened()) return -1;
Mat frame;
cap >> frame;
Mat emptyFrame = Mat::zeros(CV_CAP_PROP_FRAME_WIDTH, CV_CAP_PROP_FRAME_HEIGHT, CV_32F);
for(;;)
{
   frame = emptyFrame;
   cap >> frame;
   if (norm(frame) == 0) break;
}

相关内容

  • 没有找到相关文章

最新更新