Я уже некоторое время пытаюсь подключить свою PTZ IP-камеру Axis 212 к окну Python с помощью пакета openCV, но пока не получилось. В большинстве примеров, которые я нашел к этому моменту, используется следующий код, в частности функция .VideoCapture с URL-адресом камеры, чтобы вызвать ее в python и затем отобразить ее.
import cv2
# cap = cv2.VideoCapture('rtsp://169.254.218.43/view/viewer_index.shtml?id=17')
# cap = cv2.VideoCapture('http://username_password@169.254.218.43/axis-media/media.amp')
# cap = cv2.VideoCapture("rtsp://root:root@192.168.200.232/0")
# cap = cv2.VideoCapture("http://192.168.200.232/1")
# cap = cv2.VideoCapture("http://root:root@192.168.200.232:1/video")
# cap = cv2.VideoCapture("http://192.168.200.232:1/mjpeg")
# cap = cv2.VideoCapture("http://root:root@192.168.200.232")
# cap = cv2.VideoCapture("http://root:root@192.168.200.232/axis-media/media.amp?camera=1")
# cap = cv2.VideoCapture.read(192.168.200.232)
# cap = cv2.VideoCapture(1)
# cap = cv2.VideoCapture("http://root:root@192.168.200.232/axis-cgi")
# cap = cv2.VideoCapture("http://%IP%/axis-cgi/mjpg/video.cgi?camera=%C%")
# cap = cv2.VideoCapture("axrtpu://%IP%/axis-media/media.amp?resolution=4CIF&fps=15&videocodec=jpeg")
# cap = cv2.VideoCapture(" rtsp://%IP%/axis-media/media.amp?resolution=4CIF&fps=15&videocodec=h264")
# cap = cv2.VideoCapture(0)
cap = cv2.VideoCapture("http://192.168.200.232:8080")
while(True):
print(cap.grab())
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
Когда я запускаю этот код , я получаю следующее сообщение об ошибке:
Python сообщение об ошибке для потока openCV / IP-камеры
Traceback (последний вызов был последним): файл "C: / ABWorkingFiles / Kairos / 2020_Mar1 / AxisCamera.py", строка 25, в файле cv2.imshow ('frame', frame) cv2.error:
OpenCV (4.2.0) C: \ projects \ opencv-python \ opencv \ modules \ highgui \ src \ window. cpp: 376: ошибка: (-215: утверждение не выполнено) size.width> 0 && size.height > 0 в функции 'cv :: imshow' [tcp @ 00bd9dc0] Соединение с tcp: //192.168.200.232: 8080 не удалось: произошла ошибка -138
Ошибка возникает в строке с. imshow (); точки останова показывают, что эта переменная равна нулю, что заставляет меня думать, что строка кода .VideoCapture не обращается к потоку видеоданных и выводит его в python для отображения.
Я попытался использовать rtsp вместо http , я попытался использовать установленные имя пользователя и пароль на устройстве, я также попытался позвонить в / video и / mjpeg, и до сих пор я не смог подключить видеопоток к python. Он будет запускаться в окне браузера при вводе URL-адреса, и я даже смог сделать одно неподвижное изображение с другим образцом кода, поэтому он работает правильно, но видео по-прежнему отсутствует.
Любая помощь это будет с благодарностью, я очень новичок в openCV, и я чувствую, что я могу упустить что-то простое в моем синтаксисе все. Я чувствовал, что довольно точно определил c с моей проблемой, но если мне нужно быть более конкретным c, просто дайте мне знать.
Спасибо!