title: cv2读取视频,并保存图像或视频 date: 2022-07-02 18:10:24 tags: opencv
@TOC文章来源地址https://www.toymoban.com/news/detail-512780.html
cv2读取视频,并保存图像或视频
cv2读取视频的一般流程
- 获取视频 cap = cv2.VideoCapture()
- 判断获取的视频是否成功,成功读取视频对象则返回True。 cap.isOpened()
- 按帧读取 ret, frame = cap.read()
- 展示图像 cv2.waitKey(1)
读取本地文件视频并展示
from turtle import color
import numpy as np
import cv2 as cv
import cv2
def read_video_show(videoName):
'''
opencv 读取视频
cv2.VideoCapture(filename) #读取本地视频
cv2.VideoCapture(index) #获取摄像头
'''
#1. 读取视频
cap = cv2.VideoCapture(videoName) #若参数为0, 则是本地摄像头
#2. 判断读的视频流是否成功
while cap.isOpened(): #当成功时
#3. 获取每帧图像
ret, frame = cap.read() #若获取成功,ret为True,否则为False;frame是图像
if ret: #成功获取图像
cv2.imshow('frame', frame) #两个参数,一个是展示画面的名字,一个是像素内容
key = cv2.waitKey(25) # 停留25ms,当为0的时候则堵塞在第一帧不会继续下去
if key == ord(' ') or key == ord('q'): #当键入空格或者q时,则退出while循环
break
cap.release() #释放视频
cv2.destroyAllWindows() #释放所有显示图像的窗口
def read_video_save(videoName):
'''
opencv 保存视频
cv2.VideoWriter(filename, fourcc, fps, frameSize, [isColor])
'''
cap = cv2.VideoCapture(videoName)
#视频属性
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取原视频的宽
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取原视频的搞
fps = int(cap.get(cv2.CAP_PROP_FPS)) #帧率
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) #视频的编码
#视频对象的输出
out = cv2.VideoWriter('video_output.avi', fourcc, 20.0, (width, height))
# out = cv2.VideoWriter('out.avi', fourcc, 20.0, (width, height))
while cap.isOpened():
ret, frame = cap.read()
cv2.imshow('fame', frame)
key = cv2.waitKey(25)
out.write(frame) #写入视频
if key == ord('q'):
break
cap.release() #释放视频
out.release()
cv2.destroyAllWindows() #释放所有的显示窗口
def read_video_write(videoName):
'''
读取视频并保存截帧
cv2.imwrite(filename, frame)
'''
cap = cv2.VideoCapture(videoName)
#视频属性
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取原视频的宽
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取原视频的搞
fps = int(cap.get(cv2.CAP_PROP_FPS)) #帧率
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) #视频的编码
n, i = 0, 0 #总的帧数,保存的第i张图片
while cap.isOpened():
ret, frame = cap.read()
if ret:
n += 1
if n % fps == 0:
i += 1
filename = '{:0>4}.jpg'.format(str(i))
cv2.imwrite(filename, frame) #存入快照
cv2.imshow('frame', frame)
key = cv2.waitKey(25)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
文章来源:https://www.toymoban.com/news/detail-512780.html
到了这里,关于cv2读取视频-并保存图像或视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!