【发布时间】:2021-03-17 19:45:30
【问题描述】:
我正在构建一个项目,其中我从网络摄像头或 USB 摄像头或从 url 捕获视频,并使用机器学习 tensorflow API 对视频执行对象检测。如果我从网络摄像头或外部 USB 摄像头获取输入视频,一切正常,但是当我使用 url 从 IP 摄像头获取输入时,代码在运行 30-40 秒后失败。 我的代码是这样的
import cv2
vid = cv2.VideoCapture(“rtsp://x.xx.xx.xx:554”)
While(True)
_,img = vid.read()
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
final_img = show_inference(detection_model , img)
final_img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imshow(‘frame’, final_img)
If cv2.waitkey(1)
break
Vid.release()
cv2.destroyAllWindows()
当我使用以下几行使用网络摄像头或 USB 摄像头执行它时,这工作正常:
cv2.VideoCapture(0) 或 cv2.VideoCapture(1)
但是当我使用 url 运行时,它会显示 30-40 秒的帧,然后失败并出现以下错误
OpenCV(4.4.0)\source\color.cpp:182: error:(-215:Asertion failed)!_src.empty() in function ‘cv::cvtColor’
在我看来,opencv 库无法从 url 捕获实时提要,然后代码失败。 任何人都知道如何解决此问题,以下是我正在使用的版本和规格:
- 在没有 gpu 的 i5 机器上使用 Tensorflow 2.0
- 海康威视 PTZ 网络摄像机
- Python 3.7 版
- Opencv 4.4 版
【问题讨论】:
标签: python-3.x tensorflow opencv machine-learning ip-camera