首页 > 解决方案 > 使用 Axis 212 PTZ IP 摄像机和 openCV 在 Python 中打开视频流时遇到问题

问题描述

一段时间以来,我一直在尝试使用 openCV 包将我的 Axis 212 PTZ IP 摄像机连接到 Python 窗口,但到目前为止还没有成功。到目前为止,我发现的大多数示例都使用以下代码,特别是带有相机 URL 的 .VideoCapture 函数将其调用到 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

当我运行此代码时,我收到以下错误消息:

openCV/IP 摄像头流的 Python 错误消息

openCV/IP 摄像头流的 Python 错误消息

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: error: (-215:Assertion failed) size.width>0 && size.height>0 in函数 'cv::imshow' [tcp @ 00bd9dc0] 连接到 tcp://192.168.200.232:8080 失败:出现错误号 -138

错误发生在 .imshow(); 断点显示此变量为空,这使我相信 .VideoCapture 代码行没有访问视频数据流并将其带入 python 进行显示。

我尝试使用 rtsp 而不是 http,我尝试在设备上使用设置的用户名和密码,我还尝试调用 /video 和 /mjpeg,但到目前为止我还无法连接视频流到python。当我输入 URL 时,它将在浏览器窗口中运行,我什至能够使用不同的代码示例捕获单个静止图像,因此它可以正常通信,但仍然没有视频。

对此的任何帮助将不胜感激,我对openCV很陌生,我觉得我的语法中可能遗漏了一些简单的东西。我觉得我的问题非常具体,但如果我需要更具体,请告诉我。

谢谢!

标签: pythonopencvip-camera

解决方案


推荐阅读