opencv --- 人脸识别、人脸比对

news2024/9/23 13:23:43

opencv — 人脸比对

1、opencv安装参考:

windows: windows 环境下安装OpenCV For Java
linux:linux — CentOS 7 环境下编译安装OpenCV For Java

进入到opencv的安装目录:
在这里插入图片描述

进入到build\java 目录
在这里插入图片描述

2、准备文件

# 1. 特征分类器:windows 和 linux 中的配置文件都一样,随便用哪个都行
haarcascade_frontalface_alt.xml
# windows 路径 : opencv\build\etc\haarcascades
# linux 路径 : /usr/local/share/opencv4/haarcascades

# 2. jar 包 - 也可以直接使用 javacv 中的 opencv 包
opencv-490.jar
# windows 路径 : {opencv安装目录}\opencv\build\java
# linux 路径 : /usr/local/share/java/opencv4

# 3. 动态库
opencv_java490.dll (windows系统使用此文件)
# windows 路径 : {opencv安装目录}\opencv\build\java\{x64}/{x86} 跟据系统选择
libopencv_java4790.so (linux系统使用此文件)
# linux 路径 : /usr/local/share/java/opencv4

3、代码实现

3.1 pom.xml添加依赖

<!-- 版本的依赖与下载的opencv版本一致-->
	
	<dependency>
	    <groupId>org.bytedeco</groupId>
		<artifactId>opencv</artifactId>
        <version>4.9.0-1.5.10</version>
    </dependency>

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

opencv
OpenCV: 开源计算机视觉库
[项目地址:https://gitcode.com/gh_mirrors/opencv31/opencv](https://gitcode.com/gh_mirrors/opencv31/opencv)

或:

	
	<dependency>
		<groupId>org.openpnp</groupId>
		<artifactId>opencv</artifactId>
		<version>4.9.0-0</version>
	</dependency>

以上三个依赖任选其一即可,项目打包后观察一下使用哪个依赖打包后的jar文件更小

实验证明:
javacv-platform依赖的jar最大,达到929.64M
org.openpnp.opencv依赖最小,几乎为0M
org.bytedeco.opencv依赖居中,大小为2M

优化依赖

	<dependency>
	    <groupId>org.bytedeco</groupId>
	    <artifactId>javacpp</artifactId>
	    <version>1.5.10</version>
	    <classifier>windows-x86_64</classifier>
	</dependency>
	<dependency>
	    <groupId>org.bytedeco</groupId>
	    <artifactId>openblas</artifactId>
	    <version>0.3.26-1.5.10</version>
	    <classifier>windows-x86_64</classifier>
	</dependency>
	<dependency>
	    <groupId>org.bytedeco</groupId>
	    <artifactId>opencv</artifactId>
	    <version>4.9.0-1.5.10</version>
	</dependency>
	<dependency>
	    <groupId>org.bytedeco</groupId>
	    <artifactId>opencv</artifactId>
	    <version>4.9.0-1.5.10</version>
	</dependency>
	<dependency>
	    <groupId>org.bytedeco</groupId>
	    <artifactId>javacv</artifactId>
	    <version>1.5.10</version>
	</dependency>

3.2 编写代码

代码中存在加载.dll、haarcascade_frontalface_alt.xml文件,请确保文件地址正确

package com.testpro.test.opencv;

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

import java.util.Arrays;

public class FaceCompare {
   

    // 初始化人脸探测器
    static CascadeClassifier faceDetector;

    private static final String PATH_PREFIX = "C:\\Users\\dev\\Desktop\\";

	static int i = 0;

    static {
   
        // 判断系统
        String os = System.getProperty("os.name");

        // 加载动态库
        if (os != null && os.toLowerCase().startsWith("windows")) {
   
            // Windows操作系统
            // todo windows 系统部署加载 .dll 文件 - 路径跟据自己存放位置更改【这里需要使用绝对路径】
            System.load("D:\\opencv\\opencv\\build\\java\\x64\\opencv_java470.dll");
        } else if (os != null && os.toLowerCase().startsWith("linux")) {
   
            // Linux操作系统
            // todo Linux 服务器部署加载 .so 文件 - 路径跟据自己存放位置更改【是否需要绝对路径有待验证,目前只在windows 系统实践过】
            System.load("/opt/face/libopencv_java440.so");
        }

        // 引入 特征分类器配置 文件:haarcascade_frontalface_alt.xml 文件路径
        // 此文件在opencv的安装目录build\etc\haarcascades下可以找到
        String property = "D:\\opencv\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml";
        System.out.println(property);
        faceDetector = new CascadeClassifier(property);
    }

    public static void main(String[] args) {
   
        // 图片路径不能包含中文
        String str1 = PATH_PREFIX + "3-1.jpg";
        String str2 = 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2105574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络:http协议

计算机网络&#xff1a;http协议 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、HTTP协议工作简介1. 特点2. 传输时间分析3. http报文结构 三、HTTP版本迭代1. HTTP1.0和HTTP1.1主要区别2. HTTP1.1和HTTP2主要区别3. HTTPS与HTTP的主要区别 四、参考文献 一、本文内容…

如何操作可以有效的防止其他人修改Excel文件?

工作中&#xff0c;我们经常遇到同一份表格可能需要好多人共同去完成&#xff0c;但是当你整理好数据发给别的同事的时候&#xff0c;等表格再回来的时候&#xff0c;你可能发现你之前设置的资料格式内容等都被修改了&#xff0c;遇到这种情况时&#xff0c;如何操作可以有效的…

Codeforces Round 970 (Div. 3)(A~H)

​​​​​题目链接​​​​​​​​​​​​​​​​​​​​​ A 当 a 为奇数的时候&#xff0c;无论如何配对都无法将最后一个 1 减去&#xff1b; 当 a 为偶数的时候&#xff0c;b 也偶数&#xff0c;自然可以内部通过加减操作变成 0&#xff1b;当 b 为奇数的时候&#…

观察者设计模式详解

观察者设计模式详解 文章目录 观察者设计模式详解一、定义二、观察者模式的结构三、特点四、应用场景五、实现 一、定义 **观察者设计模式&#xff08;Observer Pattern&#xff09;**是一种行为设计模式&#xff0c;也叫做 “发布-订阅模式”&#xff0c; 它定义了一种一对多…

ArcGIS的8个“合并”功能要分清——矢量:编辑器合并,复制粘贴,工具合并、追加、联合——栅格:镶嵌、镶嵌至新栅

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 今天来看看ArcGIS中的几个涉及“合并”功能的用法。 对矢量&#xff1a; 包括编辑器中的合…

IOS 20 发现界面(UITableView)歌单列表(UICollectionView)实现

发现界面完整效果 本文实现歌单列表效果 文章基于 IOS 19 发现界面&#xff08;UITableView&#xff09;快捷按钮实现 继续实现发现界面歌单列表效果 歌单列表Cell实现 实现流程&#xff1a; 1.创建Cell&#xff0c;及在使用UITableView的Controller控制器上注册Cell&#x…

uni-app应用更新(Android端)

关于app更新&#xff0c;uni-app官方推荐的是 uni-upgrade-center&#xff0c;看了下比较繁琐&#xff0c;因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端&#xff0c…

【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error

问题描述 使用Redis-cli连接Redis服务&#xff0c;因为工具无法直接支持TLS 6380端口连接&#xff0c;所以需要使用 stunnel 配置TLS/SSL服务。根据文章(Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel) &#xff1a; https://www.cnblogs.com/luligh…

Python使用turtle画笑脸

import turtle as t t.pensize(5) #设置画笔尺寸 t.color("red","yellow") #设置画笔颜色 t.begin_fill() #开始填充 t.circle(150) #绘制一个半径为100像素的圆 t.end_fill() #结束填充#画眼睛&#xff08;左眼…

Leetcode - 周赛413

目录 一&#xff0c;3274. 检查棋盘方格颜色是否相同 二&#xff0c;3275. 第 K 近障碍物查询 三&#xff0c;3276. 选择矩阵中单元格的最大得分 四&#xff0c;3277. 查询子数组最大异或值 一&#xff0c;3274. 检查棋盘方格颜色是否相同 本题就是找规律&#xff0c;假设白…

x11转发远程图形界面

1、 开一个有vnc的节点 2、 开放所有用户的Xserver权限 xhost 3、X11转发 ssh hlzhang192.168.3.156 -X4、打开远程窗口 paraview在227的界面打开156的图形窗口

uniapp和vue3中使用vConsole在H5中开启移动端调试

uniapp和vue3中使用vConsole在H5中开启移动端调试 1. 安装vconsole npm install vconsole --save2. 在main.js中全局引入 重新启动项目即可

【C++】手搓实现模板类

myTamplate.h #ifndef MYTAMPLATE_H #define MYTAMPLATE_H #include <iostream> using namespace std;template<typename T> class Node {T *data; //数据域int size; //指针域int len;//实际长度 public://无参构造Node():size(10),len(0){data new T[size]…

写的一致性问题之双写模式

文章目录 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚2、先写redis&#xff1a; 1、先写mysql&#xff1a;mysql会回滚&#xff0c;而redis不会回滚 写入msql成功&#xff0c;写入redis也成功&#xff0c;但是后续事务提交失败&#xff0c;mysql会回滚&a…

Django学习(一)

一、创建django项目 二、修改settings.py里的配置&#xff1a; 1、修改语言和时区&#xff1a; # 语言编码 LANGUAGE_CODE zh-hansTIME_ZONE UTCUSE_I18N True# 不用时区 USE_TZ False 2、配置数据库&#xff1a; DATABASES {default: {ENGINE: django.db.backends.m…

Python中的self有什么作用

你是否曾经好奇过,为什么Python类中的方法总是有一个神秘的self参数?为什么有时它似乎可有可无,有时却又不可或缺?今天,让我们一起深入探讨Python中self的奥秘,揭开面向对象编程的神秘面纱! 目录 引言:self的重要性self的本质:实例的引用为什么需要self?self的工作原理self的…

极米科技:走出舒适圈,推动数据架构现代化升级 | OceanBase 《DB大咖说》

《DB 大咖说》第 13 期&#xff0c;邀请到了极米科技软件与创新产品线高级架构师施刘凡来进行分享。 在小红书平台上&#xff0c;“是否应将家里的电视升级为投影仪&#xff1f;”这一话题激发了上百万篇笔记的分享与推荐&#xff0c;反映出年轻群体对投影仪的偏好。随着手机、…

Java MVC

1. MVC模式 1.1. JavaBean JavaBean&#xff1a;符合特定规范的Java类&#xff0c;是一种可重用的组件 特定规范&#xff1a; public, class, 提供无参数构造方法属性private提供public的getter和setter方法 功能分类&#xff1a; 封装数据&#xff1a;数据Bean&#xff0c…

【gtokentool】什么是数字货币?怎么使用?

一、什么是数字货币 数字货币是一种基于密码学原理&#xff0c;独立于传统银行体系运行的电子货币形式。数字货币具有以下特点&#xff1a; 去中心化&#xff1a;数字货币采用去中心化的交易验证方式&#xff0c;不依赖于任何中央机构或政府。安全性高&#xff1a;通过加密算法…

STM32G474之DAC

STM32G474分别使用CORDIC硬件和“math.h”的正弦值&#xff0c;从DAC1和DAC2输出。 1、DAC特点 PA4的附加功能为DAC1_OUT1&#xff0c;无需映射&#xff0c;直接将它配置为模拟功能&#xff0c;就可以使用了。 PA6的附加功能为DAC2_OUT1&#xff0c;无需映射&#xff0c;直接将…