使用javacv从mp4视频抓取图片并识别是否包含人脸

1.背景

从mp4视频中抓取照片,发送照片到百度api对比进行人脸识别匹配。由于百度api识别人脸按次数收费,为了节省接口费用,本地服务器抓取视频照片后,调用javacv识别是否人脸,识别到人脸后再调用百度api能够节省一半以上的接口费用。

2.目标

  1. 从mp4抓取视频,每秒钟抓取1张照片保存到本地硬盘。
  2. 根据上一步抓取的视频,判断是否包含人脸。
  3. 包含人脸的照片保存带有检测框的图片。

3.依赖引入javacv

<dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.5.9</version>
        </dependency>
 

4.下载人脸检测分类器 haarcascade_frontalface_default.xml

下载地址:https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
如果人脸识别不理想,考虑换成其它的分类器,参考: 算法优化二——如何提高人脸检测正确率

5.视频准备

使用笔记本电脑自带的摄像头拍摄一个11秒长的视频:先不包含人脸,然后人脸移入视频中,然后静止2秒,人脸再移出到视频外。

6.完整代码

import org.bytedeco.javacv.*;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.RectVector;
import org.bytedeco.opencv.opencv_objdetect.CascadeClassifier;

/**
 * 功能描述
 *
 * @author: zenghaiwen
 * @date: 2024年07月23日 11:10
 */
public class VideoThumbnailExtractor {
   
   

    public static void extractThumbnail(String video
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值