OpenCV+ip摄像头实现远程实时监控

一.项目准备

本项目所使用的内容有:

1.ip摄像头app

主要依靠连接其ip来实现远程连接的效果,效果和遥控无人机所用的app功能类似

2. 外接扩展显示屏(HDMI接口)

这个不是必需品,但是多一个屏就方面观察,想自动识别某些物品并记录等等的功能还是得依靠程序代码实现,而本质上都是一种信号传递

3. 配置一台可以运行python的电脑(图略)

每一个程序员都应该有

 二.代码部分

思路:

导入opencv,使用videocapture获取摄像,其目标地址为ip摄像头的ip地址,

设置参数(缓存数,缓存区大小,分辨率,帧数),然后循环逐帧捕获

其中,

ret参数返回一个布尔值(True/False),代表有没有读取到内容;

frame表示截取到一帧的图片cv2.waitKey(1) 表示:若按下按键返回按键的ASCII值,否则返回-1,

& 0xFF 的按位与操作只取cv2.waitKey(1)返回值最后八位,ord('Q')表示返回Q的ASCII值,break在这块的作用就是按Q关闭(quit)

import cv2
# 创建一个窗口 名字叫做cap
cv2.namedWindow('cap', flags=cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO | cv2.WINDOW_GUI_EXPANDED)
'''
#打开USB摄像头
cap = cv2.VideoCapture(0)
'''
# 摄像头的IP地址,http://用户名:密码@IP地址:端口/
ip_camera_url = 'http://admin:[email protected]:8081/video'
# 创建一个VideoCapture
cap = cv2.VideoCapture(ip_camera_url)
print('IP摄像头是否开启: {}'.format(cap.isOpened()))
# 显示缓存数
print(cap.get(cv2.CAP_PROP_BUFFERSIZE))
# 设置缓存区的大小
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
# 调节摄像头分辨率
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 设置FPS
print('setfps', cap.set(cv2.CAP_PROP_FPS, 25))
print(cap.get(cv2.CAP_PROP_FPS))
while True:
    # 逐帧捕获
    ret, frame = cap.read()  
    cv2.imshow('cap', frame)
    if cv2.waitKey(1) & 0xFF == ord('Q'):
        break
# 退出后,释放VideoCapture对象
cap.release()
cv2.destroyAllWindows()

终端结果信息:

IP摄像头是否开启: True
0.0
1920.0
1080.0
setfps False
25.0

以局域网形式将手机与电脑程序调用地址连接

如手机内置的摄像功能一样,将图像显示在电脑程序的窗口中,此刻的截图内容在传达"CSDN就是给力,博主是欧皇"的图像信息

程序运行结果:

 利用另一个手机拍得的上帝视角:

电脑屏,手机屏,外接显示屏,

 至此一个简单的监控就配置完了,可以在此基础上进行拓展,目标跟踪,运动检测,识别分析等等,那就不是一个简单的摄像头了......

猜你喜欢

转载自blog.csdn.net/qq_53521409/article/details/127896293