处理视频我们引入的还是numpy 和 OpenCV 的包
引入方式如下:
import numpy as np
import cv2
我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以
#加载视频
cap = cv2.VideoCapture('./1.mp4')
下面我们进行读取视频
#读取视频
flag,frame = cap.read()读取视频的方法会返回两结果,flag表示是否读完 frame是读取的图像
我们可以获取图像的宽高等等
#获取帧数
cap.get(cv2.CAP_PROP_FPS)#获取宽度
cap.get(cv2.CAP_PROP_FRAME_WIDTH)
下面是两个例子
第一个读取本地视频,并识别视频中的人脸,这里获取人脸的特征数据在上篇文章中已说明,这里不多说
#读取视频
cap = cv2.VideoCapture('./1.mp4')
#添加人脸特征
detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
#读取视频并进行人脸识别
while cap.isOpened():flag,frame = cap.read()gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)face_zone = detector.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5)for x,y,w,h in face_zone:cv2.circle(frame,center=(x+w//2,y+h//2),radius=w//2,color =[0,0,255],thickness=2)if flag == False:break;cv2.imshow('ll',frame)if ord('q') == cv2.waitKey(81):break
cv2.destroyAllWindows()
cap.release()
第二个例子, 我们调用本地摄像头,识别人脸,并将视频储存到本地
#cv2 打开本地摄像头 识别人脸 并保存视频
cap = cv2.VideoCapture(0)
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))+1
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))+1
#保存的视频格式有很多种,大家可以自己从网上查一下对应的标识
videoWriter = cv2.VideoWriter('./my.mp4',cv2.VideoWriter_fourcc('M','P','4','v'),24,(w,h))
detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
while cap.isOpened():falg,frame = cap.read()if falg == False:break;gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)face_zone = detector.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5)for x,y,w,h in face_zone:cv2.circle(frame,circle=(x+w//2,y+h//2),radius=w//2,color =[0,0,255],thickness=2)videoWriter.write(frame)if falg == False:break;cv2.imshow('ll',frame)if ord('q') == cv2.waitKey(20):break;
cv2.destroyAllWindows();
cap.release();
videoWriter.release();