龙空技术网

带你体验OpenCV操作摄像头视频实战功能

PHM小知 581

前言:

今天大家对“opencv多摄像头”可能比较看重,看官们都需要知道一些“opencv多摄像头”的相关内容。那么小编同时在网络上搜集了一些关于“opencv多摄像头””的相关知识,希望咱们能喜欢,我们快快来了解一下吧!

前言

opencv视频处理主要设计了实时摄像头读取视频,本地视频读取并处理两个大的方面,

主要介绍了视频读取及处理的基本操作,内容概述如下:

* 摄像头视频读入、本地视频读入* 图像及视频写入保存* 视频流单帧单帧处理* 每一帧视频流的基本属性,如帧率、视频流宽度高度等

pip install -i  opencv-python

Requirement already satisfied: opencv-python in /opt/conda/lib/python3.6/site-packages

Requirement already satisfied: numpy>=1.11.3 in /opt/conda/lib/python3.6/site-packages (from opencv-python)

1.读取摄像头实时视频

# -*- coding: utf-8 -*-# 1.读取视频import cv2 as cv"""cv.VideoCapture(0)@params: 读取摄像头——>设备索引,如0,1,2,...n         读取本地视频——>"D:/video/test.mp4""""cap = cv.VideoCapture(0)# 基本属性fps = cap.get(5)  # 帧率frame_width = cap.get(3)  # 每一帧视频流宽度frame_height = cap.get(4)  # 每一帧视频流高度now_position = cap.get(0)  # 获取当前播放进度位置fourcc = cv.VideoWriter_fourcc(*'XVID')  # 视频编码器print(fps, frame_width, frame_height, now_position)# 创建视频保存对象out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径 mp4, avi                     -1,  # 视频编码器,为-1可自动匹配                     int(fps),  # 帧率                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度# 2.逐帧读取视频为图像进行处理num = 1while cap.isOpened():    """cap.read()    @return1:True or False,True 代表读取成功    @return2:视频流的每一帧图像数组值    """    ret, frame = cap.read()    if not ret:        print(">>>视频读取为空,正在退出程序.....")        break    cv.imshow("frame", frame)        """点击视频框,按'q'退出程序, 中止视频流播放    if cv.waitKey(1) == ord('q'):        break    """    if cv.waitKey(1) == ord('q'):        break        """图像保存:保存每一帧视频流的图片    cv.imwrite("data/img/"+ str(num) +".png", frame)    """    cv.imwrite("data/img/"+ str(num) +".png", frame)        """视频保存:    out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径                     -1,  # 视频编码器,为-1可自动匹配                     int(fps),  # 帧率                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度    out.write(frame)    """    out.write(frame)    num += 1# 3.完成所有操作后,释放捕获器cap.release()cv.destroyAllWindows()

0.0 0.0 0.0 0.0

2.读取本地视频

# -*- coding: utf-8 -*-# 1.读取视频import cv2 as cv"""cv.VideoCapture(0)@params: 读取摄像头——>设备索引,如0,1,2,...n         读取本地视频——>"D:/video/test.mp4""""cap = cv.VideoCapture("data/video/test.mp4")# 基本属性fps = cap.get(5)  # 帧率frame_width = cap.get(3)  # 每一帧视频流宽度frame_height = cap.get(4)  # 每一帧视频流高度now_position = cap.get(0)  # 获取当前播放进度位置fourcc = cv.VideoWriter_fourcc(*'XVID')  # 视频编码器print(fps, frame_width, frame_height, now_position)# 创建视频保存对象out = cv.VideoWriter("data/video/2_test.mp4",  # 保存视频路径 mp4, avi                     -1,  # 视频编码器,为-1可自动匹配                     int(fps),  # 帧率                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度# 2.逐帧读取视频为图像进行处理num = 1while cap.isOpened():    """cap.read()    @return1:True or False,True 代表读取成功    @return2:视频流的每一帧图像数组值    """    ret, frame = cap.read()    if not ret:        print(">>>视频读取为空,正在退出程序.....")        break    cv.imshow("frame", frame)        """点击视频框,按'q'退出程序, 中止视频流播放    if cv.waitKey(1) == ord('q'):        break    """    if cv.waitKey(1) == ord('q'):        break        """图像保存:保存每一帧视频流的图片    cv.imwrite("data/img/"+ str(num) +".png", frame)    """    cv.imwrite("data/img/2_"+ str(num) +".png", frame)        """视频保存:    out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径                     -1,  # 视频编码器,为-1可自动匹配                     int(fps),  # 帧率                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度    out.write(frame)    """    out.write(frame)    num += 1# 3.完成所有操作后,释放捕获器cap.release()cv.destroyAllWindows()

0.0 0.0 0.0 0.0

参考资料

[1] 视频获取与显示,

[2] 视频流每一帧属性等,

PS:需要本文项目的完整代码以及数据集的朋友,关注<数据算法时代>,在评论区私信小编即可分享给你,希望对读者朋友有所帮助!

标签: #opencv多摄像头 #opencv 视频播放