微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rtsp cv2.VideoCapture onvif摄像机传输不匹配,并且-215:断言大小和宽度> 0失败

如何解决rtsp cv2.VideoCapture onvif摄像机传输不匹配,并且-215:断言大小和宽度> 0失败

我在尝试通过网络从IP摄像机获取帧时是否缺少某些东西?该解决方案不适用于"Nonmatching transport in server reply" when cv2.VideoCapture rtsp onvif camera,how to fix?不适用于我。

我正在做的事情中缺少什么吗? 背景信息:

  • OS Win 7 64位
  • Python-同时使用IDLE和DOS / cmd版本v3.8.5-显示错误代码
  • 打开简历-版本3.4.4
  • 路由器,地址为192.168.1.1
  • 地址为192.168.1.100的无线适配器

示意图: IP摄像机-> RJ45进入无线路由器(192.168.1.1)->空中-> PC的无线适配器(192.168.1.100)-> python计算机程序,试图对该程序进行解码。 再次注意:我可以使用其他应用程序,但不能使用opencv。

我的IPCamera的工作位置:

我的相机确实与其他应用程序(例如VLC播放器)通信 IPCamera的视频流可以通过VLC播放器(3.0.11 Vetinari)和Media Player Classic(1.9.8.21)通过FFMPEG和EVEN我的android v5.1.1智能手机播放rstp流。 因此,从其他应用程序从IP摄像机接收rstp流没有问题。

请注意,可以在以下代码中使用python中的VLC:

import vlc
player = vlc.MediaPlayer('rtsp://user:pword@192.168.1.183:554/onvif1')
player.play()
player.stop()

注意:用户和密码位于相机底部

但是我想使用opencv以便从“帧”中提取字节。

用于复制问题的代码

import numpy as np
import cv2,os

#It does not matter which of the following os.environ assignments worked
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp"
#os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;0"
#os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp"
#os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "dummy"

# The url3 has been successfully used in VLC player and Media Player Classic Home. 
# BUT here the program stops 
url3 = "rtsp://user:pwrd@192.168.1.183:554/onvif1"

#cap = cv2.VideoCapture(url3)
cap = cv2.VideoCapture(url3,cv2.CAP_FFMPEG)
while(True):
    ret,frame = cap.read()
    #print(frame)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

在IDLE和DOS / cmd行中运行时,有两种错误消息 在IDLE程序中,当您进入-215:assertion错误时, 在IDLE中:

Traceback (most recent call last):
  File "<stdin>",line 4,in <module>/
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-9d
_dfo3_\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion Failed)
 size.width>0 && size.height>0 in function 'cv::imshow'

在DOS / cmd窗口中:

Python 3.8.6 (tags/v3.8.6:db45529,Sep 23 2020,15:52:53) [MSC v.1927 64 bit (AM
D64)] on win32
Type "help","copyright","credits" or "license" for more information.
>>> import numpy as np,cv2,os
>>> os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;0"
>>> url3 = "rtsp://user:pwrd@192.168.1.183:554/onvif1"
>>> cap = cv2.VideoCapture(url3,cv2.CAP_FFMPEG)
[rtsp @ 000000000050df80] Nonmatching transport in server reply

进一步说明: 实例化VideoCapture之后,上面的程序停止,如DOS / cmd运行以及在IDLE中实例化VideoCapture之后插入以下代码所示:

cap = cv2.VideoCapture(url3,cv2.CAP_FFMPEG)
cap.isOpened()
False

请协助,谢谢! 悉尼的安东尼

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。