banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Python] 使用OpenCV實現圖像和視頻轉換操作

將視頻按 FPS 拆解成單張圖片 使用 cv2.VideoCapture cv2.VideoCapture (video_path) 計算 FPS 使用,注意部分壓縮視頻 FPS 存在丟幀情況,需要進行跳幀處理 fps = int (vidcap.get (cv2.CAP_PROP_FPS))

def video_split():
video_path = 'test/video/video_01.mp4'
video_name = video_path[:-4]
vidcap = cv2.VideoCapture(video_path)
success,image = vidcap.read()
fps = int(vidcap.get(cv2.CAP_PROP_FPS))
count = 0
while success:
image = image_process(image)
cv2.imwrite("%s/%d.jpg" % (video_name, count), image)
#if count % fps == 0:
# cv2.imwrite("%s/%d.jpg" % (video_name, int(count / fps)), image)
print (' 處理第 % d 秒: ' % int (count /fps), success)
success,image = vidcap.read()
count += 1

將單張圖片集合合併成視頻 使用 cv2.VideoWriter fourcc = cv2.VideoWriter_fourcc ('D', 'I', 'V', 'X') #不同視頻編碼對應不同視頻格式(例:'I','4','2','0' 對應 avi 格式) video = cv2.VideoWriter ( file_path, fourcc, fps, size)

def video_combine():
path = 'test/video/video_01/'# 文件路徑
filelist = os.listdir (path) #獲取該目錄下的所有文件名
filelist.sort(key=alphanum_key)
fps = 6
size = (580,420) #圖片的分辨率片
file_path = 'test/video/video_01_out.mp4'# 導出路徑
fourcc = cv2.VideoWriter_fourcc ('D', 'I', 'V', 'X') #不同視頻編碼對應不同視頻格式(例:'I','4','2','0' 對應 avi 格式)
video = cv2.VideoWriter( file_path, fourcc, fps, size)

for item in filelist:
    if item.endswith('.png'):     #判斷圖片後綴是否是.png
        item = path + '/' + item 
        image = cv2.imread(item)  #使用opencv讀取圖像,直接返回numpy.ndarray 對象,通道順序為BGR ,注意是BGR,通道值默認範圍0-255。
        video.write(image)        #把圖片寫進視頻
video.release() #釋放

現在編碼用到了 CV_FOURCC 獲取編碼格式: CV_FOURCC ('P', 'I', 'M', '1') = MPEG-1 codec CV_FOURCC ('M', 'J', 'P', 'G') = motion-jpeg codec CV_FOURCC ('M', 'P', '4', '2') = MPEG-4.2 codec CV_FOURCC ('D', 'I', 'V', '3') = MPEG-4.3 codec CV_FOURCC ('D', 'I', 'V', 'X') = MPEG-4 codec CV_FOURCC ('U', '2', '6', '3') = H263 codec CV_FOURCC ('I', '2', '6', '3') = H263I codec CV_FOURCC ('F', 'L', 'V', '1') = FLV1 codec

參考: https://blog.csdn.net/errors\_in\_life/article/details/72809580 http://www.fjii.com/yw/2018/0919/182870.shtml

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。