title: cv2讀取視頻,并保存圖像或視頻 date: 2022-07-02 18:10:24 tags: opencv
@TOC文章來源地址http://www.zghlxwxcb.cn/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) #若參數(shù)為0, 則是本地攝像頭
#2. 判斷讀的視頻流是否成功
while cap.isOpened(): #當(dāng)成功時
#3. 獲取每幀圖像
ret, frame = cap.read() #若獲取成功,ret為True,否則為False;frame是圖像
if ret: #成功獲取圖像
cv2.imshow('frame', frame) #兩個參數(shù),一個是展示畫面的名字,一個是像素內(nèi)容
key = cv2.waitKey(25) # 停留25ms,當(dāng)為0的時候則堵塞在第一幀不會繼續(xù)下去
if key == ord(' ') or key == ord('q'): #當(dāng)鍵入空格或者q時,則退出while循環(huán)
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 #總的幀數(shù),保存的第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()
文章來源:http://www.zghlxwxcb.cn/news/detail-512780.html
到了這里,關(guān)于cv2讀取視頻-并保存圖像或視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!