opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片

转载请注明文章来源:https://blog.csdn.net/caf1234/article/details/97671140

一、实现笔记本和海康网络摄像头(型号:DS-2CD3T86FWDV2-I3S 4mm)的连接

二、代码实现每秒截图

以下详细介绍:

首先,本人的摄像头是网络摄像头,选用的方法是通过IP地址访问摄像机

一、实现笔记本和海康网络摄像头(型号:DS-2CD3T86FWDV2-I3S 4mm)的连接

  • 将海康网络摄像头通过网线与笔记本相连并且将摄像头接入电源。
  • 购买的海康网络摄像头的IP为192.168.1.64,需要将笔记本的以太网IP修改为和摄像头同网段。也就是修改为192.168.1.X。其中具体操作为找到本机电脑的网络设置,打开以太网的属性,找到【Internet 协议版本4(TCP/IPv4)】,选择其属性,打开,设置为【使用下面的IP地址】,并修改IP地址、子网掩码和默认网关。
  • opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片_第1张图片opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片_第2张图片opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片_第3张图片
  • 打开cmd,ping一下网络摄像头的IP,看是否可以ping的通。若ping成功,则笔记本与摄像头连接成功,否则,连接失败。(如果想要实时观看自己摄像头的视频图像,可以在浏览器的地址栏中输入http://摄像头的ip地址进行访问,输入地址后,弹出的页面需要输入摄像头的用户名和密码,正确输入后即可获取摄像头的实时图像。例如输入:http://192.168.1.64)opencv+海康摄像头,实现每秒获取摄像头拍摄视频的一帧图片_第4张图片

二、代码实现每秒截图
 

import cv2
import time

def get_img_from_camera_net(folder_path,url):
    cap = cv2.VideoCapture(url)#定义摄像头对象
    # 按帧读取视频,其中ret是bool值(如果读取帧是正确的则返回True,如果文件读到结尾,返回值为False)
    # frame是每一帧的图像,是个三维矩阵,frame颜色空间是BGR
    ret, frame = cap.read()
    if ret is True:
        i = 0
        timeF = 25 #每隔25帧提取一次图片,本摄像头每秒内会有25帧,所以要实现每秒截一张图片,则每25帧保存一帧图片
        while True:
            i = i + 1
            if(i % timeF == 0):
                cv2.imwrite(folder_path + str(time.time()) + ".jpg", frame)  # 存储为图像,图像以当前时间命名
            ret, frame = cap.read()
            if ret is False:
                print("断开连接,自主重连")
                cap = cv2.VideoCapture(url)
                ret, frame = cap.read()                
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        cap.release()
        cv2.destroyAllWindows()
    else:
        cap = cv2.VideoCapture(url)
        ret, frame = cap.read()
        print("断开连接,自主重连")

# 测试
if __name__ == '__main__':
    folder_path = "F:/image/" #存储图片的本地路径
    url = 'rtsp://用户名:密码@192.168.1.64' #网络摄像头的用户名、密码、IP
    get_img_from_camera_net(folder_path , url)

 

你可能感兴趣的:(计算机视觉)