前言:
今天大家对“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 视频播放