IP camera
我们在手机的应用市场上搜索 IP camera就可以找到这个软件
Tips: 这款APP是有广告的注意不要乱点广告,略影响用户体验。
考虑开发一个更好的
网络环境
需要确定你的手机与电脑处在同一个局域网下,即他们连接同一个WIFI。
启动
点击运行IP摄像头APP , 点击下方的打开IP摄像头服务器 的选项。
点击确定
服务器开启之后,会提示你这个视频流服务器在局域网中的IP还有端口号。
打开网络摄像头
在浏览器中输入你的局域网地址
这时候会弹出让你输入账号和密码
账号密码分别为 admin
admin
这时候就能够使用啦
在opencv中使用
核心代码
# 制定URL http://用户名:密码@IP地址:端口号/
ip_camera_url = 'http://admin:admin@192.168.43.1:8081/'
# 创建一个VideoCapture
cap = cv2.VideoCapture(ip_camera_url)
只要在VdeioCapture中输入网络摄像头的url就可以使用了
完整代码:
# -*- coding: utf-8 -*-
'''
读取手机摄像头的视频流
1. 手机与电脑链接同一个WIFI热点
2. 需要sudo权限:
sudo python ipcam-cap.py
'''
import cv2
import time
ip_camera_url = 'http://admin:admin@192.168.2.237:8081/'
# 创建一个窗口
cv2.namedWindow('ip_camera', flags=cv2.WINDOW_NORMAL | cv2.WINDOW_FREERATIO)
cap = cv2.VideoCapture(ip_camera_url)
if not cap.isOpened():
print('请检查IP地址还有端口号,或者查看IP摄像头是否开启,另外记得使用sudo权限运行脚本')
while cap.isOpened():
ret, frame = cap.read()
cv2.imshow('ip_camera', frame)
if cv2.waitKey(1) == ord('q'):
# 退出程序
break
cv2.destroyWindow('ip_camera')
cap.release()
yolov4中也同理
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg weights\yolov4.weights http://admin:admin@192.168.0.100:8081 -i 0 -thresh 0.25
设置缓存区的大小 !!!
有时候,如果你在OpenCV中做图像处理的时候,如果图像处理比较耗时,就导致存在VideoCapture缓存区的图像队列越积越多。 你就会发现延时好高啊,过了半天画面才更新,实际的画面与VideoCapture的实际画面时差越拉越大。
这个问题,可以通过缩小缓冲区尺寸来解决。
cap.set
设定VideoCapture的各种属性,这里指定缓冲区的尺寸为1:
cap.set(cv2.CAP_PROP_BUFFERSIZE,1)
完整一些的代码片段:
# 摄像头的IP地址
# http://用户名:密码@IP地址:端口/
ip_camera_url = 'http://admin:admin@192.168.2.237:8081/'
# 创建一个VideoCapture
cap = cv2.VideoCapture(ip_camera_url)
# 设置缓存区的大小 !!!
cap.set(cv2.CAP_PROP_BUFFERSIZE,1)