1.视频一帧一帧处理,以人脸识别为例
cv2只能输出avi格式的视频
import numpy as npimport cv2import matplotlib.pyplot as pltcap = cv2.VideoCapture("images/2.mp4")fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter("1.avi", fourcc, 20, (544, 960))while cap.isOpened(): ret, imgs = cap.read() urlXml = 'D:/Users/24268/anaconda3/envs/python_keras/Lib/site-packages/cv2/data/' # img = cv2.imread(imgs) faceCascade = cv2.CascadeClassifier(urlXml + 'haarcascade_frontalface_default.xml') if ret is True: gray = cv2.cvtColor(imgs, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale( gray, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5) ) # print(faces) print(len(faces)) for (x, y, w, h) in faces: cv2.circle(imgs, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2) cv2.imshow("renlian", imgs) cv2.waitKey(1) out.write(imgs)cap.release()out.release()
2.avi视频转mp4
import osffmpeg = r'C:\Users\24268\Desktop\ffmpeg-N-102809-gde8e6e67e7-win64-gpl-shared\ffmpeg-N-102809-gde8e6e67e7-win64-gpl-shared\bin\ffmpeg.exe' # 写自己的安装路径# 由于路径中有空格,所以路径需要用上双引号,否则会找不到该文件cmd = ffmpeg + " -i " + '1.avi' + " -c copy " + '2.mp4'os.system(cmd)print("done")
3.音频处理 为解决cv2处理视频没声音
from moviepy.editor import *# # 提取声音# video = VideoFileClip('阿姨人脸识别.mp4')# audio = video.audio # 没他也没事# audio.write_audiofile('test.mp3')# 获取视频video_clip = VideoFileClip('阿姨人脸识别.mp4')# 获取音频audio_clip = AudioFileClip('test.mp3')# 视频里面添加声音final_video = video_clip.set_audio(audio_clip)# 保存视频final_video.write_videofile("123.mp4")