JAVA实现百度人脸检测截取人像

OpenCV Java实现人脸抠图和行为识别 然后,我们加载了一个预训练的人脸检测器,并读取了输入图像。接下来,我们将图像转换为灰度图像,并使用人脸检测器检测图像中的人脸。在本文中,我们将探讨如何使用Java编程语言结合OpenCV库来实现人脸抠图和行为识别的功能。人脸抠图是将人脸从图像中分割出来的过程,而行为识别是通过对人的动作进行分析和识别来判断其行为。接下来,我们将使用OpenCV提供的Java接口来实现人脸抠图和行为识别。在OpenCV中,我们可以使用视频处理功能来处理图像序列,并使用机器学习算法来训练和识别不同的行为。 阅读详情

业务场景

最近有个需求,调用其他厂家的人脸分析,但是用户上传的图片千奇百怪,有相册截图、有远距离拍照,硬件厂家无法准确找到人脸,所以让我们处理下用户上传的人像图,将人像头部截取出来进行分析。

实现方法

共测试了两种方法,一种是基于OpenCV的JavaCV,还有一种是百度的人脸识别接口。大家可以根据下方的优缺点按需使用。
由于内容过多分成两篇,java代码是jdk1.8的,项目代码地址放在下方,对你有用的话别忘记点赞收藏。

JavaCV所需的xml算法文件为网上查找的,缺点是使用效果不是特别精确,对于截图,小规格人脸识别不那么灵敏,可能需要算法调试。优点是对于比较明显的人像图扣取成功率还是比较高的。

百度人脸识别接口优点是精准,缺点是免费版有qps限制,每秒一次,不过后期处理的话问题不大。

项目demo码云地址

百度人脸识别截取方式

1 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>test01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>test01</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.12.0</version>
        </dependency>
        <!--hutool工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2 创建导入、导出文件夹

按需创建源文件、导出文件
按需放置

3 运行demo

import cn.hutool.core.img.ImgUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.*;

/**
 * @author cuixi
 * @description: 百度人脸识别demo
 * @date 2024/5/31
 */
@Slf4j
public class BaiduFaceDemo {
    // 百度申请的id和secret
    private static final String ID = "";
    private static final String SECRET = "";
    //原始图片地址
    private static final String ORIGINAL_IMG_PATH = "D:\\fac_test\\original_img\\";
    //转换后地址
    private static final String CONVERSION_IMG_PATH = "D:\\fac_test\\conversion_img\\";

    public static void main(String[] args) throws IOException {
        String token = getAuth();
        long count = 0;
        List<String> filePathList = getFiles(ORIGINAL_IMG_PATH);
        log.info("启动处理程序,文件" + filePathList.size() + "个");

        for (String filePath : filePathList) {
            log.info("开始处理图像:" + filePath);
            count++;
            try {
                exImg(token, filePath);
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        log.info("结束处理程序:生成文件" + count + "个");
    }
    private static void exImg(String token, String path) throws IOException {
        System.out.println(token);
        HashMap<String, Object> map = new HashMap<>();
        String fileContentAsBase64 = getFileContentAsBase64(path, false);
        map.put("image", fileContentAsBase64);
        map.put("image_type", "BASE64");
        String post = HttpUtil.post("https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=" + token, map);
        JSONObject jsonObject = JSONObject.parseObject(post);
        System.out.println(post);
        JSONObject result = jsonObject.getJSONObject("result");
        JSONArray faceList = result.getJSONArray("face_list");
        List<JSONObject> list = faceList.toJavaList(JSONObject.class);
        for (JSONObject object : list) {
            JSONObject location = object.getJSONObject("location");
            File file = new File(path);
            BufferedImage image = ImageIO.read(file);
            imageCut(location, image, file);
        }
    }

    public static List<String> getFiles(String path) {
        List<String> filePathList = new ArrayList<>();
        File file = new File(path);
        // 如果这个路径是文件夹
        if (file.isDirectory()) {
            // 获取路径下的所有文件
            File[] files = file.listFiles();
            if (files != null) {
                for (File value : files) {
                    // 如果还是文件夹 递归获取里面的文件 文件夹
                    filePathList.add(value.getPath());
                }
            }
        }
        return filePathList;
    }
    public static String imageCut(JSONObject location, BufferedImage image, File file) throws IOException {
        Integer x = location.getInteger("left");
        Integer y = location.getInteger("top");
        Integer width = location.getInteger("width");
        Integer height = location.getInteger("height");
        FileOutputStream fileOutputStream = null;
        double base = 2;
        Rectangle rectangle = new Rectangle();
//        x,y其实就是坐标,能确定一个点位,指的是从那个点位开始截取,x0y0代表的是从左下角点开始裁剪
//        rectangle.x = x;
//        rectangle.y = y;
//        rectangle.width = width;
//        rectangle.height = height;
        int i1 = (int) (x - width / base);
        if (i1 < 0) {
            i1 = 0;
        }
        int i2 = (int) (y - height / base );
        if (i2 < 0) {
            i2 = 0;
        }
        rectangle.x = i1;
        rectangle.y = i2;
        rectangle.width = (int) (width * base);
        rectangle.height = (int) (height * base);
        System.out.println("x:" + x);
        System.out.println("width:" + width);
        System.out.println("y:" + y);
        System.out.println("height:" + height);
//        开始截取,返回一个image对象
        Image newImg = ImgUtil.cut(image, rectangle);
        String fileName = file.getName();
        String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
        String newFileName = fileName.substring(0, fileName.lastIndexOf(".")) + "_ex." + extension;
        try {
            byte[] bytes = ImgUtil.toBytes(newImg, "png");
            fileOutputStream = new FileOutputStream(CONVERSION_IMG_PATH + newFileName);
            fileOutputStream.write(bytes);
            log.info("输出图像到:" + CONVERSION_IMG_PATH + newFileName);
            return CONVERSION_IMG_PATH + newFileName;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            fileOutputStream.close();
        }
    }

    /**
     * 获取文件base64编码
     *
     * @param path      文件路径
     * @param urlEncode 如果Content-Type是application/x-www-form-urlencoded时,传true
     * @return base64编码信息,不带文件头
     * @throws IOException IO异常
     */
    static String getFileContentAsBase64(String path, boolean urlEncode) throws IOException {
        byte[] b = Files.readAllBytes(Paths.get(path));
        String base64 = Base64.getEncoder().encodeToString(b);
        if (urlEncode) {
            base64 = URLEncoder.encode(base64, "utf-8");
        }
        return base64;
    }

    /**
     * 获取权限token
     *
     * @return 返回示例:
     * {
     * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
     * "expires_in": 2592000
     * }
     */
    public static String getAuth() {
        return getAuth(ID, SECRET);
    }

    /**
     * 获取API访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     *
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth(String ak, String sk) {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + ak
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + sk;
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
//            for (String key : map.keySet()) {
//                System.err.println(key + "--->" + map.get(key));
//            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
//            System.err.println("result:" + result);
            JSONObject jsonObject = JSONObject.parseObject(result);
            String access_token = jsonObject.getString("access_token");
            return access_token;
        } catch (Exception e) {
            System.err.printf("获取token失败!");
            e.printStackTrace(System.err);
        }
        return null;
    }

}
javacv配置+javacv人脸识别代码 javacv配置+javacv人脸识别代码。javacv配置+javacv人脸识别代码。javacv配置+javacv人脸识别代码 立即下载

相关推荐

基于javaCv实现的PCA人脸识别Demo

使用javaCv实现的人脸识别小程序,包含有ORL人脸库图片,使用了PCA降维再识别的方法,识别率不高,只有46%左右,但有一定的参考意义,注释写的很详细!

Java使用opencv实现人脸识别、人脸比对

OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,包括图像读取、显示、滤波、特征检测、目标跟踪等功能。opencv官网:https://opencv.org/

xiaomu_a的博客 1万+

java实现人脸识别并裁剪人脸图片

19年10月3号更新 新资源地址https://download.youkuaiyun.com/download/b379685397/11831772。 使用教程见https://blog.youkuaiyun.com/b379685397/article/details/101940373 有问题可以私信我哦

Java基于OpenCV检测实现人脸头像居中裁剪

利用OpenCV检测图片中人脸的位置;根据人脸图像在图片的位置,实现居中裁剪。

IT熊的专栏 3246

OpenCV Java实现人脸识别和裁剪功能

主要为大家详细介绍了OpenCV Java实现人脸识别和裁剪功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

VS2022 中 std::mutex 静态初始化陷阱:一次诡异崩溃的排查记录

VS2022中使用std::mutex时遇到的静态初始化陷阱问题。该问题源于VS2022 17.4版本为std::mutex添加constexpr支持后,全局静态初始化可能导致系统资源未就绪时锁失效或崩溃。文章分析了问题现象、影响范围,并提供了解决方案。最后给出了排查清单和核心建议

qq_34552942的博客 953

JAVA实现JavaCV人脸框取截取人像

java实现openCV人脸框取并截取人像

Stringcui的博客 1099

Python爬取腾讯视频m3u8加密流实战(附完整代码)

本文提供了一份详细的Python实战教程,指导如何通过抓包分析、模拟请求头与载荷,破解腾讯视频的m3u8加密流防盗链机制,并附上完整代码实现视频片段的下载与合并。教程涵盖从侦察到代码实现的完整流程,并包含参数动态化、多线程下载等高级技巧与避坑指南,旨在帮助开发者掌握流媒体下载的核心技术。

weixin_29090089的博客 1639

java如何做一个简单的头像截取?

前一段时间我的java老师布置了一个作业,给了我们几张图片,叫我们截出每张图片的的人脸,截成证件照的形式,我百度了好久都找不到相关的代码,都是什么人脸识别啥的,好高深的样子,所以我百度了一下人脸的像素大概是多少,如何截取图片,就做出了这个样子,虽然有点low,但还是可以截出头像的 import javax.imageio.ImageIO; import javax.imageio.ImageRea...

weixin_43729960的博客 871

设计数据库 ER 图太麻烦?不妨试试这两款工具,自动生成数据库 ER 图!!!

告别手动画图,提高效率~

楼下小黑哥 2万+

华为项目TR5评审后发现了重大缺陷的应急处理经验

华为TR5评审后发现重大缺陷时,启动分级应急机制:1)缺陷分级:按严重性(致命/严重/一般)评估影响;2)应急响应:跨部门会议制定方案,冻结生产并调配资源;3)根因修复:通过RCA定位问题,设计变更后回归测试;4)变更管理:评审修复影响,调整发布策略;5)持续改进:记录缺陷闭环,优化流程。案例显示,软件闪退问题通过热修复补丁和代码重构解决。关键工具包括Jira、FMEA等,确保缺陷在量产前拦截,降低风险。

从技术实践立足,从项目管理方法论延伸思考 1071

关于java多线程的一些知识

具体到 java 内存模型,由于 Java 被设计为跨平台的语 言,在内存管理上,显然也要有一个统一的模型。系统存在 一个主内存( Main  Memory ) ,   Java 中所有变量都储存在 主存中,对于所有线程都是共享的。每条线程都有自己的工 作内存 ( Working Memory ) ,工作内存中保存的是主存中某 些变量的拷贝, 线程对所有变

suxiangxiao的专栏 159

保姆级教程:用C++逆向解析通达信shm.tnf文件(附完整代码与偏移量详解)

本文提供了一份详细的C++逆向工程教程,指导开发者如何解析通达信的shm.tnf文件。通过分析文件结构、定位关键字段并实现完整解析流程,帮助量化交易开发者高效获取沪市股票数据。教程包含完整代码示例和偏移量详解,适合金融数据本地化处理需求。

weixin_27945229的博客 524

java代码自动抠图_Opencv java实现人脸抠图和行为识别

基于java的OpenCV环境搭建(Windows平台上ecplise)https://blog..net/qq_32447301/article/details/78494913https://download..net/download/qq_37996327/10504398 opencv下载地址 亲测可用以下为java测试案例代码package com.snail.util.openc...

weixin_39934063的博客 2008

SAP Build Work Zone standard edition 订阅报错 OIDC trust missing 的成因与完整解决路径

摘要:用户订阅SAP Build Work Zone时遇到422错误,提示未配置OpenID Connect信任。该错误表明业务用户需通过SAP Cloud Identity Services的OIDC协议认证,而当前子账户仅配置了SAML信任或未配置信任。解决方法是进入子账户的Trust Configuration页面,使用Establish Trust功能建立与SAP Cloud Identity Services的OIDC信任关系。这是SAP新版服务的强制要求,SAML协议已不被支持。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

[Dify实战]插件编写- 如何让插件直接输出文件对象(支持 TXT、Excel 等)

本文介绍了在Dify插件中实现文件对象返回的方法。通过create_blob_message()函数,开发者可以输出txt、Excel等格式文件,让用户直接下载而非复制文本。文章详细讲解了二进制文件生成的原理,提供了文本翻译和Excel报表生成的代码示例,并列出常见MIME类型对照表。这种技术能显著提升插件实用性,特别适用于翻译、报表生成等需要文件输出的场景,使交互体验从"复制粘贴"升级为"一键下载"。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1249

java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot

先一步一步来,中间会讲解会踩到的坑。作者环境:java11(最好用java8)

蒾酒的博客 7219

Jenkins自动化部署服务到Kubernetes环境

通过Jenkins实现自动化部署可以大大提高软件交付的效率和质量。本文介绍的部署流程涵盖了从代码编译、Maven依赖管理、Docker镜像构建到Kubernetes部署的完整流程,并提供了通知机制以便及时了解部署状态。特别需要注意的是Maven与私服的配置,这是确保构建过程能够正常访问依赖包的关键。通过Jenkins的凭据管理功能,可以安全地管理私服的认证信息,避免敏感信息泄露。在实际应用中,您可能需要根据具体的项目需求和环境特点调整部署脚本。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 528

Java调用OpenCv本地库实现简单的人脸识别

摄像头检测其实也差不多,主要讲一下如何调用摄像头,调用opencvJava库中的VideoCapture对象的方法,参数为0说明调用本地摄像头,由于opencv没有提供窗口类,我们使用HighGui组件绘制窗口,使用while循环无限循环进行检测,绘制矩阵框。在main方法中,我们首先加载了opencv的xml文件用于人脸检测,调用mat对象中的imread方法读取一张图像,调用opencvJava库中的方法进行检测,绘制检测框,最后输出保存的图片到指定路径。在官网下载两个文件,图片我标注的。

咖啡因依赖症晚期 1970

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

OpenCV+JAVA实现人脸裁剪

1、安装opencv4.10 2、把安装目录下的 jar和dll文件复制到工程文件夹下的lib下面 D:\opencv\opencv\build\java D:\opencv\opencv\build\java\x64 3、把D:\opencv\opencv\sources\data\haarcascades文件夹下的haarcascade_frontalface_alt.xml复制到 ...

zsj777的专栏 1995

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java实现人脸检测

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,

2401_84153146的博客 1480

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java项目中使用OpenCV检测人脸的应用

将下载好的opencv的jar包放在项目的根目录下,可以新建一个lib的文件夹,将其放在此处;

qq_44723773的博客 2142

Java 借助 OpenCV 实现人脸识别登录

????这是一个或许对你有用的社群????一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事中“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

weixin_44421461的博客 728

JavaCV 实现图片中人脸检测完整代码教程

今天微信群里聊天,群友问道有没有能让人脸露牙齿的接口,我记得想百度阿里的都应该有类似人脸识别,分析、融合的api,但是我百度了一下,确实没有找到,可能他们提供的都是最基础的接口,如果想实现自己的想要的某种效果,比如人脸微笑,露牙等,还需要自己开发。想这样让一张没有露牙的图片,变成露牙的照片,第一步肯能是先要再图片上检测到人脸,其次是嘴巴,然后再用算法合成到图像嘴边的位置。

洛阳泰山的博客 5255

利用java实现视频人像分割及视频背景替换

视频人像分割是将视频中的人体从原视频中分割出来,得到透明背景的人体视频。如何基于算法分割后的人像结果进行再加工。

xiayexuyou的博客 1365
上一篇: Windows server配置PostgresSQL15数据库主从模式
下一篇: JAVA实现JavaCV人脸框取截取人像
你的良心真的真的不会痛吗
博客等级 码龄7年 54粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值