OpenCV C API не позволяет выпускать и открывать камеру

0

Я только что установил Ubuntu 14.04 и openCV 2.4.9 на новый компьютер.

У меня был рабочий код, который в какой-то момент закрывает последнее cvVideoCapture и открывает другой, который может иметь или не иметь другой индекс:

CvCapture* capture;
capture = cvCaptureFromCAM(1);

...

cvReleaseCapture(&capture);
capture = cvCaptureFromCAM(0);

Этот код работал безупречно с Ubuntu 12.0.4 и OpenCV 2.4.? (Я не уверен, какая версия, но она была старше одного года назад). Теперь он выдает ошибку

HIGHGUI ERROR: V4L: device /dev/video0: Unable to open for READ ONLY

С другой стороны, эквивалент API C++ работает:

VideoCapture cap;
cap.open(1);

...

cap.release();
cap.open(0);
  • 0
    Документация гласит: «В C API, когда вы закончили работать с видео, освободите структуру cvReleaseCapture() с помощью cvReleaseCapture() , ...» docs.opencv.org/modules/highgui/doc/…
  • 0
    Я дам ему попробовать и удалить все cvReleaseCapture ()
Показать ещё 3 комментария
Теги:
opencv

2 ответа

0

После некоторых экспериментов я уверен, что cvRelease определенно не для освобождения экземпляра CvCapture. Я получаю предупреждение компилятора о разных типах указателей. Может быть, вы должны скомпилировать некоторые дополнительные флаги. Вы определенно должны использовать cvReleaseCapture(&capture), как указано в документах. Я не уверен, что это решение для вашей проблемы, возможно, вам нужно предоставить дополнительную информацию.

CvCapture* capture;
capture = cvCaptureFromCAM(1);

cvReleaseCapture(&capture);
capture = cvCaptureFromCAM(0);
  • 0
    Спасибо, я пробовал это, но проблема сохраняется
0

Вы можете использовать разные имена для каждого устройства камеры open.Like ниже code.Try это.

 VideoCapture cap,cap1;
    cap.open(1);

    ...

    cap.release();
    cap1.open(0);
  • 0
    Спасибо, но C ++ API работает без нареканий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню