使用Axis 212 PTZ IP摄像头和openCV在Python中打开视频流时出现问题

使用Axis 212 PTZ IP摄像头和openCV在Python中打开视频流时出现问题,python,opencv,ip-camera,Python,Opencv,Ip Camera,我已经尝试了一段时间使用openCV包将Axis212PTZIP摄像头连接到Python窗口,但到目前为止都没有成功。到目前为止,我发现的大多数示例都使用以下代码,特别是带有摄像头URL的.VideoCapture函数,将其调用到python中并随后显示 import cv2 # cap = cv2.VideoCapture('rtsp://169.254.218.43/view/viewer_index.shtml?id=17') # cap = cv2.VideoCapture('http

我已经尝试了一段时间使用openCV包将Axis212PTZIP摄像头连接到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错误消息

回溯(最近一次呼叫最后一次): 文件“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:断言失败)函数“cv::imshow”[tcp@00bd9dc0]连接到tcp://192.168.200.232:8080 失败:出现错误号-138

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

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

如果您能在这方面提供帮助,我将不胜感激。我对openCV非常陌生,我觉得我的语法中可能遗漏了一些简单的东西。我觉得我对我的问题非常具体,但如果我需要更具体的话,请告诉我


谢谢大家!

解决:我找到了有关将Axis IP摄像头连接到外部源/在web浏览器中打开其提要的文档,而不同的应用程序将具有不同的语法(用于视频、位图、运动jpeg等)。我的项目的正确语法如下所示
cap=cv2。VideoCapture(“http://192.168.200.232/axis-cgi/mjpg/video.cgi?fps=30")
。这使我能够通过python窗口流式传输运动jpeg提要。请看,并将流链接插入VLC播放器,如果它在那里工作,它应该与这些链接一起工作