视频转图片-人脸识别-合成视频
代码:
import cv2
import os,sys
import numpy as np
face_xml = cv2.CascadeClassifier(r"C:\Users\lenovo\Desktop\python\jiqixuexi\haarcascade_frontalface_default.xml")
eye_xml = cv2.CascadeClassifier(r"C:\Users\lenovo\Desktop\python\jiqixuexi\haarcascade_eye.xml")
cap = cv2.VideoCapture(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face_1.flv")
isOpened = cap.isOpened
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps,width,height)
os.chdir(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face\chuliqian")
print(os.getcwd)
i = 0
while(isOpened):
if i == 2424:
break
else:
i = i+1
(flag,frame) = cap.read()
fileName = "image" +str(i) +".jpg"
if flag == True:
cv2.imwrite(fileName,frame,[cv2.IMWRITE_JPEG_QUALITY,100])
print("end!")
for m in range(1,2424):
os.chdir(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face\chuliqian")
fileName = "image" +str(m) +".jpg"
print(fileName)
img = cv2.imread(fileName)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_xml.detectMultiScale(gray,1.3,5)
print("face=",len(faces))
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_face = gray[y:y+h,x:x+w]
roi_color = img[y:y+h,x:x+w]
eyes = eye_xml.detectMultiScale(roi_face)
for (e_x,e_y,e_w,e_h) in eyes:
cv2.rectangle(roi_color,(e_x,e_y),(e_x+e_w,e_y+e_h),(0,255,0),2)
os.chdir(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face\chulihou")
cv2.imwrite(fileName,img,[cv2.IMWRITE_JPEG_QUALITY,100])
img = cv2.imread(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face\chulihou\image1.jpg")
imgInfo = img.shape
size = (imgInfo[1],imgInfo[0])
print(size)
os.chdir(r"C:\Users\lenovo\Desktop\python\jiqixuexi\face\chulihou")
videoWrite = cv2.VideoWriter("2.mp4",-1,24,size)
# 文件名 , 编码器 ,帧率 , 图片大小
for n in range(1,2424):
fileName = "image" + str(n) + ".jpg"
print(fileName)
img = cv2.imread(fileName)
videoWrite.write(img)
print("end!")
处理效果: