Я пытаюсь захватить фреймы из iSight Macbook Pro с использованием OpenCV 2.4.6 и построен с использованием компилятора Apple LLVM 4.2 на Xcode.Захват с Macbook Pro iSight с Opencv
Однако я не получаю никаких фреймов. Обычно я настраиваю цикл while, пока он не будет заполнен, но один из них работает в течение ~ 30 секунд без результата. Как я могу отладить это?
void testColourCapture() {
cv::VideoCapture capture = cv::VideoCapture(0); //open default camera
if(!capture.isOpened()) {
fprintf(stderr, "ERROR: ColourInput capture is NULL \n");
}
cv::Mat capFrame;
int frameWaits = 0;
while (capFrame.empty()) {
capture.read(capFrame);
//capture >> capFrame;
cvWaitKey(30);
frameWaits++;
std::cout << "capture >> capFrame " << frameWaits << "\n";
if (frameWaits > 1000) {
break;
}
}
imshow("capFrame", capFrame);
}
Я обеспечил его не многопоточным. Кроме того, capture.isOpened всегда возвращает true.
EDIT: Похоже, другие имели эту проблему: OpenCV wont' capture from MacBook Pro iSight
EDIT: Моя процедура установки OpenCV была:
$ Sudo порт Selfupdate
$ Sudo порт установить OpenCV
Тогда , Я перетащил libopencv_core.dylib, libopencv_highgui.dylib, libopencv_imgproc.dylib и libopencv_video.dylib в папку Frameworks моего проекта Xcode, из/opt/local/lib
Какой выход вы ожидаете? Вы проверяли, не является ли 'capFrame.data'' 'NULL'? Кроме того, сколько итераций проходит цикл? Как написано, ваш код только петли один раз, если изображение заполнено. – Aurelius
Я проверяю 'capFrame.empty()', который никогда не становится истинным. Цикл продолжается до тех пор, пока frameWaits = 1000, а затем не сломается. – escapecharacter