手机当做IP摄像头与OpenCV自动重连实验
最近在准备远程视频监控分析项目,IP摄像头还在选型,临时用闲置的手机作为IP摄像头来测试。另外,实际使用中,设备重启是时常需要的事情,这里模拟一下重启摄像头重连的试验。
- IP摄像头软件,选择的是DroidCam,从软猫下载 https://softmall.net/apps/1272
- 闲置手机是7-8年前的360,厂家不做了,手机应用商店作废了,无法直接安装程序。只能用电脑,下载360手机助手,通过手机usb线连接,上传IP摄像头软件到手机,从手机文件夹中安装。
OpenCV,搞IT的大概都知道,是视频处理的核心工具库。这里就直接上代码
import cv2
import time
ip_video="http://192.168.18.8:4747/video" #DroidCam地址
"""网络ip摄像头重连"""
cap=cv2.VideoCapture(ip_video)
success=False
sleep_time=8
while True:
if cap:
if cap.isOpened():
success,frame=cap.read()
else:
cap.release()
time.sleep(sleep_time)
cap = cv2.VideoCapture(ip_video)
if not success:
cap.release()
time.sleep(sleep_time)
cap = cv2.VideoCapture(ip_video)
else:
print(frame.shape)
cv2.imshow("camera",frame)
else:
time.sleep(sleep_time)
cap = cv2.VideoCapture(ip_video)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
ip_video="http://192.168.18.8:4747/video" 打开DroidCam时,界面显示的地址。
核心的重连代码:
cap.release() #cap非空时
time.sleep(sleep_time)
cap = cv2.VideoCapture(ip_video)
*当cap非空时,也就是中途视频断流,或重新开机,就先释放摄像头,等几秒钟,再重连
*当cap为空,也就是首次连接摄像头没成功,等几秒,再重连
注意:时间等待很重要,否则会出现有画面,但不更新的情况
大家可以自由的使用IP摄像头了,即使设备重启或临时中断,不久也能自动恢复视频画面。