Ошибка Python IP-камеры

Я пытаюсь получить доступ к видео с IP-камеры. Я использую OpenCV и Python для этого. Код, который я попробовал, приведен ниже:

import numpy as np
import cv2
from cv2 import cv

camera=cv.CaptureFromFile("http://root:[email protected]/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg")
if camera is None:
print 'Camera is null'
else:
print 'Camera is not null'
cv.NamedWindow("win")

while True:
image=cv.QueryFrame(camera)
cv.ShowImage("win", image)
k=int(cv.WaitKey(10))
if k is 27:
break

При запуске этого кода вывод, который я получаю:

Image not converted

Используя другой метод, CaptureFromCAM вместо CaptureFromFile код:

import numpy as np
import cv2
from cv2 import cv

camera=cv.CaptureFromCAM(0)
if camera is None:
print 'Camera is null'
else:
print 'Camera is not null'
cv.NamedWindow("win")

while True:
image=cv.QueryFrame(camera)
if image is None:
print 'No conversion to IPL Image'
break
else:
cv.ShowImage("win", image)

Когда я запускаю этот код, я получаю сообщение об ошибке:

ERROR: SampleCB() - buffer sizes do not match
No conversion to IPL Image

Я читал об этом, и SampleCB() Ошибка в том случае, если размер буфера не соответствует ожидаемому размеру ввода. Я пытался изменить разрешение потоковой передачи, но, похоже, ничего не работает. Я последовал за этот нить и этот нить. Они дают код C ++ и при преобразовании в Python (код, приведенный выше) это не работает. Или поток дает код для обнаружения движения. я использую Windows 7 и Затмение с Пыдев для развития. Что я делаю?

1

Решение

О, пожалуйста, придерживайтесь cv2 API. Старый cv больше не доступен в текущих версиях OpenCV:

import numpy as np
import cv2

cv2.namedWindow("win")
camera = cv2.VideoCapture("http://username:[email protected]/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg")
while camera.isOpened():
ok, image = camera.read()
if not ok:
print 'no image read'
break
cv2.imshow("win", image)
k = cv2.waitKey(1) & 0xff
if k == 27 : break # Esc pressed
1

Другие решения

Посмотрите этот пример с Python и OpenCV, IPCAM hikvision

import numpy as np
import cv2

cap = cv2.VideoCapture()
cap.open("rtsp://USER:PASS@IP:PORT/Streaming/Channels/2")

while(True):
# Capture frame-by-frame
ret, frame = cap.read()

# Our operations on the frame come here
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Display the resulting frame
cv2.imshow('Salida',frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Смотрите в окне:
Получить видео из IPCAM с помощью Python и OpenCV

0

По вопросам рекламы [email protected]