0
在OpenCV中 - 当使用USB网络摄像头初始化一个VideoCapture
对象时,每2或3次运行一次,相机将无法初始化。我有这个令人难以置信的丑陋的代码来解决这个问题,但也许有人知道可能导致相机初始化失败的原因以及如何防止它?OpenCV中的摄像机初始化失败
// Initialize video capture
camera_ = cv::VideoCapture(1);
camera_.set(CV_CAP_PROP_CONVERT_RGB , false);
camera_ >> frame_full_;
while (frame_full_.empty()){ // Could be !cap.isOpened
cerr << "Camera failure." << endl;
camera_.release();
camera_ = cv::VideoCapture(1);
camera_.set(CV_CAP_PROP_CONVERT_RGB , false);
camera_ >> frame_full_;
}
/// Do something with the camera feed.
当我关闭程序时,我得到在控制台Cleaned up camera.
,所以我想它被释放正确。
新增信息:在其中利用相机无法初始化,调用>>
/.read()
的运行需要很长的恢复。
编辑:没有使用>>
运营商和.read()
,如@ 4nonymou5建议之间没有什么区别。
感谢您的回答。我没有问题得到相机饲料和使用它;这只是偶尔,相机无法初始化,因为没有明显的原因,即你的线'cap.isOpened()'会失败;这就是为什么我有丑陋的while循环。我想知道为什么相机会间歇性地失效。 – noio
是的,我有一个类似的问题,当我改变opencv的版本的时候回来,但是,它不是摄像头的初始化,但是,在访问帧。 “camera_ >> frame_full_;” 这是为我返回一个空框架,所以我补充说,“camera_.read(frame_full_);” 到线,它的工作。 因此,只要检查问题是否相同,即使我想听到其他人的正确答案。 – 4nonymou5