Я пытаюсь открыть openCV для чтения изображения с веб-камеры моего компьютера. Код ниже успешно открывает веб-камеру (включается зеленый свет). Однако попытки захватить фрейм и, следовательно, считывать фрейм не выполняются. Я здесь в затруднении. Может ли кто-нибудь помочь?Не удается захватить рамку в OpenCV
Большое спасибо, Хиллари
P.S. Я запускаю Mac OS X 10.9 на MacBook Pro. И моя OpenCV версия 2.4.6.1
А вот код:
#include "opencv.hpp"
using namespace cv;
int main(int, char**) {
VideoCapture cap = VideoCapture(0);
if(!cap.isOpened()){
printf("failed to open camera\n");
return -1;
}
namedWindow("edges",1);
for(;;){
if(waitKey(50) >= 0) break;
if(!cap.grab()){
printf("failed to grab from camera\n");
}
}
return 0;
}
Спасибо за ваш ответ. Не 'cap >> frame' вызывает' grab() ', а затем' retrieve() '? В ссылке говорится: «Методы/функции объединяют VideoCapture :: grab() и VideoCapture :: retrieve() в один вызов». Поэтому, если 'grab()' fail не работает сам по себе, то не будет 'read()' fail слишком, потому что он вызывает grab first? –
Да, вы правы, но это делает, однако 'operator >>' игнорирует возвращенный результат из 'grab()', поэтому у вас нет доступа к нему. Дело в том, что в большинстве случаев, если что-то случилось с веб-камерой, ваша программа вылетает из 'imshow()' из-за пустого 'frame'. Я исправил свой код, чтобы он теперь обрабатывал этот случай. – yuyoyuppe
Большое спасибо за ваш ответ. Мне удалось заставить мой код работать. –