Я работаю над камерой с использованием opencv 3.0.0 и C ++ с Ubuntu 14.04,
Когда я запускаю программу с помощью камеры и останавливаю ее с помощью Ctrl kbd> + C kbd>, я не могу запустить его во второй раз, и это дает мне следующее:
libv4l2: error turning on stream: Invalid argument
VIDIOC_STREAMON: Invalid argument
Cannot read a frame from video stream
Я пробовал lsusb
и камеру (она встроена в ноутбук, а не внешний ) не признается. Также с cheeze он говорит, что при попытке открыть камеру произошла ошибка.
Единственное решение - перезагрузить ноутбук.
Любое предложение будет оценено :) спасибо
Этот occure, когда камера не выпущена Вашей программой - например, когда Вы убиваете его, используя Ctrl + C . Вы можете использовать таможенный способ выйти, петля чтения камеры - например, ждут Esc :
while (1) { // camera loop
cap.read(frame);
...
(frame processing)
...
if (waitKey(20) == 27) { // wait for 'Esc' key press for 20ms
break; // if 'Esc' key is pressed, break loop
}
}
Или лучше, Вы можете поймать Ctrl + C (сигнал SIGINT):
bool stop = false;
void sigIntHandler(int signal) {
stop = true;
}
std::signal(SIGINT, sigIntHandler);
while (!stop) { // camera loop
cap.read(frame);
...
(frame processing)
...
}
Проблема здесь с ядром
sudo apt-get install linux-generic-lts-utopic
, Это добилось цели для меня
Вы не упоминаете свою платформу, но на Raspberry Pi, эта ошибка может произойти, когда выполнение видеосъемки с помощью v4l2 драйвера требует и когда память GPU не установлена на уровне 128 МБ или больше. Выполненный sudo raspi-config
и корректируют его к 128 использованиям меню.