2015-02-20 2 views
0

Я пытался локально (подключен к Ethernet-кабелю) открывать камеру Axis M1054 с использованием OpenCv под Python. Я работаю под Windows, 7 - 64. Я использую этот код с помощью камеры компании Axis, как подключена только камера:Как открыть осевую камеру M1054 с opencv - Python

import sys 
import cv2 
import numpy as np 


capture = cv2.VideoCapture(0) 

if not capture.isOpened(): 
    print "Error opening capture device" 
    capture.release() 
    cv2.destroyAllWindows() 

if capture.isOpened(): 
    print "Device captured correctly",capture 

while 1: 

ret, frame = capture.read() 
print "frame1 =",frame 

if ret == False : 
    print "frame is None" 
    break 

cv2.imshow('Camera 1',frame) 

if cv2.waitKey(100) == 0x1b: 
    print 'ESC pressed. Exiting ...' 
    break 

capture.release() 
cv2.destroyAllWindows() 

Все, что я получаю от нее черного экрана и все матрицы отображаются благодаря

print "frame1 =",frame 

пестрят 0.

Я также пытался вызвать камеру с помощью

cv2.VideoCapture(http://169.254.167.2/axis-cgi/mjpg/video.cgi?resolution=352x240?.mjpg) 

Но я все равно получаю тот же результат.

Также важно заметить, что даже если он отображает только черное изображение и нулевые матрицы, компьютер запрашивает у меня учетные данные камеры, когда я запускаю код.

Я искал решение, но ничего, кажется, работает (я также пытался получить живое видео с Windows Media Encoder до и затем вызвать его с

cv2.VideoCapture(0) 

Но не получить любой лучший результат. ли кто-то уже сталкивался с этой проблемой?

ответ

0

cv2.VideoCapture (0) не будет работать с IP-камеры, это только для веб-камер.

для версии URL, вы могли бы проверить, что URL-адрес верен с помощью vlc? Это может быть различным для разных моделей камер, и, по словам this non official website, она должна быть http://169.254.167.2/mjpg/video.mjpg

Обратите внимание, что если камера защищена паролем, вы должны включить имя пользователя/пароль в URL: http://user:[email protected]/mjpg/video.mjpg (обычно, по умолчанию user/pass - root/root). Это, конечно, НЕ безопасно, поскольку пароль камеры отправляется незашифрованным в сети, но, вероятно, это не проблема в вашем случае.

+0

Привет, Adrien, спасибо за ваш ответ. Я пытался использовать URL в VLC и получил ошибки, пока не попробовал: http://169.254.167.2/mjpg/video.mjpg был открыт на VLC. Тем не менее, когда я изменил свой код на Python, чтобы открыть его с помощью OpenCV (т. Е. Открыв его с помощью cv2.VideoCapture («URL»), он тоже не работает, знаете ли вы какой-либо другой метод, более подходящий для вызова потока URL-адреса http ? –

+0

см. Мое изменение о имени пользователя/пароле –

0

Чтение AXIS документация here.

Я считаю, что вы можете использовать RTPS:

cv2.VideoCapture('rtsp://username:[email protected]/axis-media/media.amp')

или с помощью HTTP:

cv2.VideoCapture('http://[email protected]/axis-media/media.amp')

Прежде чем пытаться это решение в коде, я рекомендую вам (как Adrien упоминалось) убедитесь, что ссылка работает в VLC.Вы можете сделать это:

  1. Открыть VLC
  2. правой кнопкой мыши в VLC
  3. Open Media> Open Network
  4. Вставить ссылку упомянутую выше.
  5. Пресс-игра.
  6. (При необходимости) - Введите учетные данные для вашей камеры.
  7. Пресс-игра.

Теперь ваш видеопоток должен отображаться в VLC.