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

embedded/2024/10/9 9:20:00/

opencv___0">opencv — 人脸比对

opencv_1">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 中的 opencvopencv-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.ppmy.cn/embedded/109074.html

相关文章

电脑驱动作用详解

电脑驱动的主要作用是充当操作系统与硬件设备之间的桥梁&#xff0c;使操作系统能够正确地与硬件设备进行通信和控制。具体来说&#xff0c;电脑驱动的作用包括以下几个方面&#xff1a; 1. 硬件与操作系统的接口 翻译指令&#xff1a;驱动程序将操作系统的指令翻译成硬件设备…

【web网页制作】html+css旅游家乡河南主题网页制作(5页面)【附源码】

一、&#x1f468;‍&#x1f393;网站题目 旅游&#xff0c;当地特色&#xff0c;历史文化&#xff0c;特色小吃等网站的设计与制作。 二、✍️网站描述 &#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS 等来完成页面的排版设计&#x1f469;‍&#x1f393;…

已解决:ppt文件打开就是只读模式,如何改为可编辑模式?

PPT文档打开是只读模式&#xff0c;如何改成可编辑文档呢&#xff1f;这需要分几种情况来说&#xff0c;所以今天将介绍几种方法帮助PPT只读文档改为可编辑文档。 方法一&#xff1a; 我们可以先查看一下文件属性&#xff0c;属性中有只读属性&#xff0c;当我们打开文档之后带…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中&#xff0c;PDF文件和Word文档是我们离不开的两种最常见的文件&#xff0c;而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件&#xff0c;掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

Unity中的键位KeyCode

目录 常用键&#xff1a; 字母键&#xff1a; 数字键&#xff1a; 功能键&#xff1a; 方向键&#xff1a; 控制键&#xff1a; 鼠标键&#xff1a; 其他特殊键&#xff1a; 常用键&#xff1a; KeyCode.Backspace&#xff1a;退格键 KeyCode.Delete&#xff1a;删除键…

Linux基础入门 --9 DAY

文本处理工具之神vim vi和vim简介 一、vi编辑器 vi是Unix及类Unix系统&#xff08;如Linux&#xff09;下最基本的文本编辑器&#xff0c;全称为“visual interface”&#xff0c;即视觉界面。尽管其名称中包含“visual”&#xff0c;但vi编辑器实际上工作在字符模式下&#xf…

根据NVeloDocx Word模板引擎生成Word(二)

前面讲到了根据“永久免费开放的E6低代码开发平台”的NVeloDocx Word模版引擎生成Word文件的基础取数方法&#xff0c;包括取本表单字段以及引用字段&#xff0c;详见《根据NVeloDocx Word模板引擎生成Word&#xff08;一&#xff09;》。 针对这种基本的取数方法&#xff0c;…

【ORACLE】独有的函数

Oracle数据库提供了大量的内置函数&#xff0c;这些函数可以帮助开发者进行数据处理和计算。以下是一些Oracle独有的函数&#xff1a; WM_CONCAT()&#xff1a;这是一个聚合函数&#xff0c;用于将多个行的字符串值连接成一个字符串&#xff0c;通常与GROUP BY子句一起使用。例…