第一章 python-opencv-图片导入和显示
第二章 python-opencv图像简单处理
第三章 python-opencv图像mask掩膜处理
第四章 python-opencv图像马赛克
第五章 python-opencv人脸马赛克
第六章 python-opencv人脸检测
第七章 python-opencv图像张贴
第八章 python-opencv轮廓绘制
第九章 python-opencv边缘检测
第十章 python-opencvpython-opencv边缘检测与人脸检测应用
第十一章 python-opencv直方图绘制与直方图均衡
第十二章 python-opencv图像傅里叶变换
第十三章 python-opencv图像的高通滤波和低通滤波
第十四张章 python-opencv视频中的人脸检测
上一篇博客说明了如何使用python-opencv在视频中进行人脸检测,这一篇博客是在上一章博客的基础上说明如何将检测后的视频进行保存。
文中所用的人脸检测器模型请点击这里,如果无法下载可以联系我哈。
本文对代码进行了详细的注释,请查看!
import cv2
if __name__ == '__main__':
# 加载图像
video = cv2.VideoCapture('./video.mp4') # 可以将这里换成你的视频所在的地址
# 保存视频
writer = cv2.VideoWriter(filename = './hero.mp4', # 视频保存的地址和名称,记得将这里的地址换成你想要的保存到的地址
fourcc = cv2.VideoWriter.fourcc(*'MP4V'), # 视频编码,mp4格式
fps = 25, # 视频帧率
frameSize = (960, 540)) # 图片的尺寸
# 加载人脸检测器模型
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_alt_tree.xml')
while True:
retval, image = video.read() # retval 为返回的布尔值,有图片时返回True,否则为False
image = cv2.resize(image, (960,540)) # 减少图像尺寸减少计算量,这里可以根据你的视频中图像的大小进行调整
if not retval: # 当读取到最后一帧图片时,退出,停止读取
break
gray = cv2.cvtColor(image, code=cv2.COLOR_BGR2GRAY) # 转化为灰度图进行检测,减少计算量
faces = face_detector.detectMultiScale(gray) # 获得人脸检测结果
for x,y,w,h in faces: # 进行for循环,将检测到的所有人脸区域绘制标注方框
cv2.rectangle(image, pt1=(x,y), pt2=(x+w,y+h), color=[0,0,255], thickness=2)
writer.write(image) # 保存视频
cv2.imshow('image', image)
key = cv2.waitKey(1)
if key == ord('q'): # 当输入q时,停止读取
break
print(image.shape)
video.release() # 释放内存
writer.release() # 释放视频保存内存
与上一篇博客代码主要多了两处代码:
第二处: