如何解决python,从IP摄像机接收rtsp流
我想将RTSP流从IP摄像机传输到python,但是我无法使其与python一起使用。
我可以使用VLC或摄像机网站查看流。 我使用了以下代码:
import os
import cv2
import urllib.request
import requests
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"]="rtsp_transport;udp"
#print("Before URL")
#print("After URL")
adr = 'rtsp://192.168.100.86:554'
try:
stream = cv2.VideoCapture(adr)
except Exception as g:
print("no stream")
while True:
img_res = stream.read()
#print('About to show frame of Video.')
try:
cv2.imshow("Capturing",img_res)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception as e:
print(e)
知道nmap命令显示相机具有以下打开的端口:
Host is up (0.016s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
80/tcp open http
554/tcp open rtsp
7103/tcp open unknown
8001/tcp open vcom-tunnel
当我使用rtsp:554或http:80运行以上代码时,出现以下错误:
Expected cv::UMat for argument 'mat'
解决方法
我检查了您的代码,并在IP摄像机中尝试过。它给出了同样的错误。然后我只是用以下方式循环更改了阅读行:
ret,img_res = stream.read()
它解决了问题。我也在网络摄像头中尝试过,如果您不检查框架是否正常,则根本会发生相同的错误。因此,在执行其他步骤之前,检查框架至关重要。来自此处的文档ret
:
ret是一个布尔变量,如果框架可用,则返回true。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。