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