У меня возникла проблема с получением OpenCV 2.4 для захвата из потока MJPEG из Raspberry Pi, я проверил URL-адрес потока в браузере, и он, кажется, работает нормально, однако при попытке открыть его в OpenCV он зависает, когда Я пытаюсь открыть его (я не получаю ни сообщения об ошибках, ни об успехе на терминале).
cv::VideoCapture vcap;
cv::Mat raw_image;
const string videoStreamAddress = "http://192.168.0.28:8080/?action=stream";
if(!vcap.open(videoStreamAddress))
{
cout<<"Error opening video stream"<<endl;
return -1;
}
cout<<"Stream opened"<<endl;
я использую MJPEG-Streamer обеспечить поток.
Тот же код отлично работает при захвате видеопотока RTSP.
РЕДАКТИРОВАТЬ: я пытался изменить качество JPEG и разрешение изображений, снятых raspistill
на Пи, и теперь я получаю сообщение о том, что поток не удалось открыть.
Попробуйте добавить фиктивный параметр, который намекает на содержимое mjpeg:
const string videoStreamAddress = "http://192.168.0.28:8080/?action=stream&type=mjpg";
Я нашел ответ, он похож на то, что предложил Хитеш, мне просто нужно было .
до mjpg
чтобы заставить OpenCV думать, что это был URI к файлу.
Я нашел это в этот ответ на аналогичный вопрос.