2016-04-19 3 views
1

Я пытаюсь взять изображения с IP-камеры (sony snc p1) для обнаружения движения с помощью opencv java. Поток находится в формате mjpeg, и я использую VideoCapture из opencv, чтобы попытаться получить изображение. Я могу захватить изображение из видеофайла с помощью видеозахвата, но когда я пытаюсь открыть камеру, это не сработает. Я могу просмотреть поток на vlc, но этот ip-адрес не работает на opencv. Это код, который я использую:Sony Ip camera opencv Java

while (true){ 
    VideoCapture camera1=newVideoCapture("http://192.168.0.101/mjpeg");      
    if (!camera1.isOpened())     
    System.out.println("Cannot open file"); 
} 
+0

Вы должны создать экземпляр нового экземпляра VideoCapture в цикле while снова и снова: сделать это один раз перед циклом while. Какую ОС вы используете? Хорошо, что вы тестировали VLC. С какой поддержкой видео вы работаете с OpenCV? Сначала попробуйте открыть IP-камеру. Например, если у вас есть OpenCV, встроенный с поддержкой FFMPEG, сначала откройте камеру непосредственно из FFMPEG (аналогично для GStreamer, V4L и т. Д.). Если там не работает, это не связано с OpenCV. Если это так, двойная проверка OpenCV была построена с той же поддержкой видео. HTH –

+0

В худшем случае сценарий, с прагматичной перспективы, видит, есть ли еще одна библиотека Java IP-камеры, и если это так, вероятно, позволит вам получить доступ к потоку в качестве «BufferedImage», который может подключаться к 'Mat' –

ответ

0

Какая версия вы используете? В openCV 2.4 это известная ошибка. (исправлено в более поздних версиях)

Вы можете попытаться добавить фиктивный параметр в конце, что-то вроде camera1.open("http://192.168.0.101/?dummy=video.mjpg"); , потому что opencv VideoCapture ожидает расширение в конце имени файла.