1.使用Python代碼將視頻文件(.MP4格式)轉(zhuǎn)換為圖片(.jpg格式)
對(duì)視頻進(jìn)行抽幀操作,將視頻逐幀轉(zhuǎn)換為圖片(.jpg格式的圖片的文件)
此處采取的方法是:對(duì)視頻.MP4文件每隔10幀截取一張.jpg格式的圖片
需要使用的Python方法cv2在opencv-python庫(kù)中,下載安裝方式;
pip install opencv-python
實(shí)現(xiàn)上述功能的Python代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-771764.html
import cv2
# TODO 將原視頻轉(zhuǎn)換為圖片
def VideotoPicture():
# 視頻地址 創(chuàng)建一個(gè)VideoCapture對(duì)象,指定讀取的視頻文件
cap = cv2.VideoCapture(r'C:\Users\12292\Desktop\1.mp4')
# 通過(guò)攝像頭的方式
# cap = cv2.VideoCapture(1)
fps = cap.get(cv2.CAP_PROP_FPS) # 獲取幀率 每一秒的視頻幀數(shù)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 獲取寬度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 獲取高度
# 判斷視頻是否讀取成功 成功返回True 失敗返回False
sucess = cap.isOpened()
frame_count = 0
# 視頻得到的圖片名字img_name
img_name = 0
while sucess:
frame_count += 1
# 讀取視頻每一幀圖像
sucess, frame = cap.read()
# TODO 每隔10幀存儲(chǔ)一張圖片
if (frame_count % 10 == 0):
img_name += 1
# 圖片存儲(chǔ)地址以及存儲(chǔ)格式.jpg frame就是視頻轉(zhuǎn)換得到的圖片 視頻得到的圖片名字img_name從1開(kāi)始
# 即最終視頻轉(zhuǎn)換得到的圖片名字依次為1.jpg,2.jpg,3.jpg.................
cv2.imwrite(r'C:\Users\12292\Desktop\1\%d.jpg' % img_name, frame)
print("幀率(每秒視頻的幀數(shù)):", fps)
# 釋放視頻資源
cap.release
if __name__ == '__main__':
VideotoPicture() # 視頻轉(zhuǎn)圖像
2.使用Python代碼將圖片(.jpg,.png等格式)轉(zhuǎn)換為視頻文件(例如.MP4格式)
基本步驟如下:
??a. 使用glob獲取路徑下的所有圖片;
??b. cv2.imread()讀取所有圖片;
??c. 將讀取的圖片存儲(chǔ)在新的列表中,img_array;
??d. 使用cv2.VideoWriter()創(chuàng)建VideoWriter對(duì)象,注意參數(shù)的設(shè)置;
??e. 使用cv2.VideoWriter().write()保存 img_array 中的每一幀圖像到視頻文件;
??f. 釋放 VideoWriter對(duì)象;
對(duì)眾多圖片進(jìn)行拼接合成操作,將多張圖片拼接成一個(gè)視頻文件(例如.MP4格式)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-771764.html
實(shí)現(xiàn)上述功能的Python代碼如下:
import cv2
import numpy as np
import glob
import os
# 其它格式的圖片也可以 此處使用的是.jpg格式的圖片
img_array = []
# 指出用于生成視頻的圖片所在的存儲(chǔ)路徑 glob獲取路徑下的所有圖片
for filename in glob.glob('C:/Users/12292/Desktop/1/*.jpg'):
# 讀取所有圖片
img = cv2.imread(filename)
height, width, layers = img.shape
# 獲取圖片大小尺寸
size = (width, height)
# 將讀取的圖片存儲(chǔ)在新的列表中,img_array
img_array.append(img)
# avi:視頻類(lèi)型,或者導(dǎo)出.mp4類(lèi)型的視頻文件也可以
# cv2.VideoWriter_fourcc(*'mp4v'):編碼格式
# 5:視頻幀率
# size:視頻中圖片大小
# 視頻輸出地址與命名:C:/Users/12292/Desktop/2/2.mp4
# 使用cv2.VideoWriter()創(chuàng)建VideoWriter對(duì)象
out = cv2.VideoWriter('C:/Users/12292/Desktop/2/2.mp4',
# cv2.VideoWriter_fourcc(*'DIVX'),
cv2.VideoWriter_fourcc(*'mp4v'),
5, size)
for i in range(len(img_array)):
# 使用cv2.VideoWriter().write()保存 img_array 中的每一幀圖像到視頻文件;
out.write(img_array[i])
# 釋放 VideoWriter對(duì)象
out.release()
到了這里,關(guān)于使用Python代碼實(shí)現(xiàn)視頻(如.MP4)與圖片(如.jpg)文件格式的相互轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!