基于opencv使用python实现人脸识别与视频生成
概述
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。
OpenCV由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法,主要倾向于实时视觉应用。
基础用法
- cv2.imread():读入图像。第一个参数为图像路径,第二个参数指定读入图像的颜色,例如cv2.IMREAD_COLOR表示读入彩色图像,cv2.IMREAD_GRAYSCALE表示读入灰度图像。
- cv2.imshow():显示图像。第一个参数是窗口的名字,第二个参数是要显示的图像。
- cv2.VideoCapture():获取摄像头视频或者读取视频文件。参数可以是设备的索引号,也可以是视频文件的路径。
- cv2.imwrite():保存图像。第一个参数是文件名,包括文件路径和文件扩展名,第二个参数是要保存的图像。
- cv2.cvtColor():转换图像颜色空间。例如将彩色图像转换为灰度图像。
实际案例
图像转视频
图像尺寸统一化
1 |
|
上述代码讲不同尺寸图像转换为统一目标尺寸,过小用黑边填充,过大进行缩放。
图像转为视频
1 |
|
上述代码从list中读取图像,使用
width = image.shape[1]获取图像宽度或高度;使用fourcc = cv2.VideoWriter.fourcc(*'MJPG') # 创建VideoWriter对象 video_name = video_out_path + id_generate_time() + "test.mp4" video = cv2.VideoWriter(video_name, fourcc, int(output_video_fps), (width, height))创建videowriter对象,其中output_video_fps规定了视频输出帧率,(width, height)规定了视频输出宽高度;后边使用image = cv2.imread(os.path.join(images_input_path, image_path))读取传入图片对象;使用resized_image = cv2.resize(image, (width, height))再次调整图片大小至合适尺寸;最后使用video.write(resized_image)写入图像到视频中。写入完成后,使用video.release()释放对象。
人脸特征检测
分类器下载与使用
- 下载地址
1 | https://github.com/opencv/opencv/tree/master/data/haarcascades。 |
- 读取与使用
1 |
|
实际案例
- 图像读取与人脸特征分割
1 |
|
- 识别结果保存
1 |
|
上述代码,在人脸中检测了眼睛、脸部特征点,并使用对应颜色框框选出来,最终保存至目标路径。
about me 个人微信

wechat offical 微信公众号
