Я использую Visual Studio Express 2013 с OpenCV 2.4.7
, следуя этому учебнику.
Я потратил часы на поиски в Интернете решений, включая все соответствующие вопросы SO. Я пробовал:
-
возвращаемое значение
VideoCapture::open
равно 1 -
расширение задержки waitKey() до 50 мс и более поздних 500 мс
-
установка размеров окна
-
создание другого проекта на Visual С++
-
открытие существующего изображения вместо чтения с камеры (та же ошибка)
но не повезло, пожалуйста, помогите!
Здесь мой код:
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
Mat image;
VideoCapture cap;
int camOpen = cap.open(CV_CAP_ANY);
namedWindow("window", CV_WINDOW_AUTOSIZE);
while (true) {
cap >> image;
imshow("window", image);
// delay 33ms
waitKey(33);
}
}
Когда я скомпилировал и запустил его, я получил следующую ошибку:
Ошибка OpenCV: утверждение не выполнено (size.width > 0 && size.height > 0) в cv:: imshow, файле........ \opencv\modules\highgui\src\window. cpp, строка 261
Ошибка на линии imshow("window", image);
. Когда я прокомментировал это, жалоб нет.
ОБНОВЛЕНИЕ:
Правдоподобное объяснение причины возникновения этой ошибки состояло в том, что моя веб-камера занимает время, чтобы начать, поэтому image.empty() истинно изначально, поэтому для выхода из программы вызывается функция abort().
С кодом
if (!image.empty()) {
imshow("window", image);
}
мы можем дождаться начала работы камеры