Python-用ffmpeg进行视频处理

FFMpeg视频处理

这里我们将对传上去的视频文件进行处理,所用语言为Python,依赖包为python-opencv,工具为ffmpeg

主要函数为:

// 对视频的每一帧进行处理:图像转HSV或黑白	 cv2.COLOR_RGB2HSV     cv2.COLOR_BGR2GRAY
cv2.cvtColor(img,cv2.cv2.COLOR_RGB2HSV)
//直方图均衡化
cv2.equalizeHist(img)
//高斯模糊和边缘检测
img = cv2.GaussianBlur(img, (3, 3), 0)
img = cv2.Canny(img, 30, 100)

步骤

  1. 切帧,读取每一帧的图像,并对其进行相应处理
  2. 将处理过的图像,合并为一个视频

代码

import os
import cv2
import subprocess

os.chdir('f:/movieData')
v_path='F:/movieData/ghz.mp4'
image_save='./pic2'

cap=cv2.VideoCapture(v_path)
frame_count=cap.get(cv2.CAP_PROP_FRAME_COUNT)

#以高斯模糊和边缘处理为例
for i in range(int(frame_count)):
    _,img=cap.read()
    # img=cv2.cvtColor(img,cv2.cv2.COLOR_RGB2HSV)   #cv2.COLOR_RGB2HSV     cv2.COLOR_BGR2GRAY
    img = cv2.GaussianBlur(img, (3, 3), 0)
    img = cv2.Canny(img, 30, 100)
    cv2.imwrite('./pic2/image{}.jpg'.format(i),img)

# 接下来为合并每一帧形成视频
images_path = image_save+'/image%d.jpg'
#帧率
fps = str(24)
str_cmd = '"./ffmpeg/bin/ffmpeg.exe" -i ' + images_path + ' -r '+fps+' output_new.mp4'
#str_cmd = 'dir'
p = subprocess.Popen(str_cmd, shell=True, stdout=None, stderr=None)
stdout, stderror = p.communicate()

结果
Python-用ffmpeg进行视频处理_第1张图片
Python-用ffmpeg进行视频处理_第2张图片

总结:这次的视频处理总体很顺利,只有在合成视频的过程中因为播放器不同的问题,而导致视频无法播放,换一个播放器就行了,或者合并成视频时改写参数也行。

相关网站:http://ffmpeg.org/

你可能感兴趣的:(ffmpeg,视频处理,python)