Хорошо, сначала ... ваша веб-камера работает с другими приложениями веб-камеры?
Ваш код немного запутался! Вы создаете окно с именем Example2_9, но вы пытаетесь нарисовать с помощью cvShowImage () в другое окно (с именем cam ), которое не существует! Исправь это! Заменить вхождения cam на Example2_9.
Если это не решит проблему, я бы, вероятно, заменил начало main () на это:
int main( int argc, char** argv )
{
cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE );
CvCapture* capture;
capture = cvCreateCameraCapture( -1 ); //yes, if 0 doesn't work try with -1
assert( capture != NULL );
В вашем коде отсутствует проверка ошибок в нескольких местах, будьте осторожны. Одной из функций может быть возвращение ошибки, и вы никогда не узнаете, пока не выполните соответствующую проверку.
Вы также можете найти множество других примеров OpenCV в Google, которые вызывают cvCaptureFromCAM () вместо cvCreateCameraCapture (). Если приведенные выше предложения не работают, попробуйте!
Еще одна вещь, на моем Macbook Pro я должен использовать cvCaptureFromCAM (0) для работы приложения. В Linux я всегда использую cvCaptureFromCAM (-1).