1、创建Java工程,并导入如下jar包

opencv-440.jar

2、编写代码

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;

static {

//路径不能包含中文 linux使用libopencv_java410.so

String opencvDllName = "D:\\java_project\\opencv440-testFace\\lib\\opencv440\\build\\java\\x64\\opencv_java440.dll";

System.load(opencvDllName);

// xml路径不能包含中文

String property = System.getProperty("user.dir") + "\\lib\\opencv440\\build\\etc\\haarcascades\\";

faceDetector = new CascadeClassifier(property + "haarcascade_frontalface_alt.xml");

}

// 灰度化人脸

public static Mat conv_Mat(String img) {

Mat image0 = Imgcodecs.imread(img);

Mat image1 = new Mat();

// 灰度化

Imgproc.cvtColor(image0, image1, Imgproc.COLOR_BGR2GRAY);

// 探测人脸

MatOfRect faceDetections = new MatOfRect();

faceDetector.detectMultiScale(image1, faceDetections);

// rect中人脸图片的范围

for (Rect rect : faceDetections.toArray()) {

Mat face = new Mat(image1, rect);

return face;

}

return null;

}

public static double compare_image(String img_1, String img_2) {

Mat mat_1 = conv_Mat(img_1);

Mat mat_2 = conv_Mat(img_2);

Mat hist_1 = new Mat();

Mat hist_2 = new Mat();

//颜色范围

MatOfFloat ranges = new MatOfFloat(0f, 256f);

//直方图大小, 越大匹配越精确 (越慢)

MatOfInt histSize = new MatOfInt(10000000);

Imgproc.calcHist(Arrays.asList(mat_1), new MatOfInt(0), new Mat(), hist_1, histSize, ranges);

Imgproc.calcHist(Arrays.asList(mat_2), new MatOfInt(0), new Mat(), hist_2, histSize, ranges);

// CORREL 相关系数

double res = Imgproc.compareHist(hist_1, hist_2, Imgproc.CV_COMP_CORREL);

return res;

}

public static void main(String[] args) {

//图片路径不能包含中文

String str1 = "D:\\Documents\\Pictures\\2020-07-28_03+55+49_.png";

String str2 = "D:\\Documents\\Pictures\\2020-07-28_03+55+53_.png";

double compareHist = compare_image(str1, str2);

System.out.println(compareHist);

if (compareHist > 0.72) {

System.out.println("人脸匹配");

} else {

System.out.println("人脸不匹配");

}

}

}

java opencv 相似度_opencv使用 java 对比两个人脸的相似度相关推荐

  1. python之对比两张图像的相似度

    python之图像背景识别 本着结合实际工作,实际落地并已应用的态度去码文. python之对比两张图像的相似度 需求:在某个手机端项目中,有多个页面图片,但每个图片都做了相应的修改,由于这种图片非常 ...

  2. java opencv 模板匹配算法_OpenCV探索之路(九):模板匹配

    模板匹配的作用在图像识别领域作用可大了.那什么是模板匹配? 模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术. 说的有点抽象,下面给个例子说明就很明白了. 在上面这幅全明 ...

  3. java opencv 物体检测_OpenCV.物体识别

    1.度娘:"OpenCV 物体识别" ZC:主看这个,讲的比较细致,操作一般都是使用的 OpenCV里面的exe,一些代码是 java的 可以搞定,最后一段测试代码 是Python ...

  4. java opencv 阀值分割_opencv 阈值分割的具体使用

    阈值分割 像素图 原始图像像素图 见下面 红色线:标注一条阈值线 二进制阈值化 首先设定一条阀值线 如127 大于127的像素点灰度值设为最大(如unit8的格式为255) 小于127的像素点灰度值设 ...

  5. java opencv 调用摄像头_opencv C++实现调用摄像头动态识别人脸

    前言 #include #include #include #include #include #include #include #include #include #include using n ...

  6. java opencv 提取车牌_opencv 学习之 车牌提取

    车牌识别分两步,一是车牌提取,而是字符识别. 下面是车牌提取. VS2010. OpenCV249. //载入图像 char * path = "d:\\picture\\06.jpg&qu ...

  7. delphi 人脸比对_OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度 | 学步园...

    终于到了有实际应用的功能了,有2张图片,里面各有一个人脸,我的目的是比较这两个人脸的相似度,这里用到了facedetect的功能,还有图像转换,图像剪切,以及直方图的比较.具体流程是: 1.分别用fa ...

  8. C++/JAVA 计算两篇文章的相似度

    C++/JAVA 计算两篇文章的相似度 这位少侠,要不要进店瞧瞧? 实验介绍及思路 问题描述: 编写程序,计算任意两篇文章的相似度. 基本思路: 利用余弦相似度来计算其相似度. 完整代码 C++ 代码 ...

  9. 几种Java常用序列化框架的选型与对比

    简介: 序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架.本文会将业界开源的序列化框架进行对比测试,分别从通用性 ...

最新文章

  1. 关于脉冲信号发生器的一点心得
  2. 使用sql server中的全文索引
  3. windows系统-函数的条件分支实现用汇编语言解释
  4. 用c语言产生大素数,C语言实现寻找大素数
  5. Tomcat 部署了web项目中文乱码
  6. 统计满足条件的4位数(信息学奥赛一本通-T1077)
  7. C学习笔记-makefile
  8. 一个用户故事的样例(极限编程)
  9. MIT6.828 boot.S文件分析
  10. 视频监控物联卡有什么作用
  11. 第17章 高级数据表示 17.7 二叉搜索树(第一部分ADT 和 接口)
  12. manjaroLinux下安装mysql时初始化mysql出错解决办法
  13. 陈纪修 数学分析,上下册
  14. 第三周作业-实现随机点名的签到程序
  15. Python之文本去重(基础版)
  16. DXGI 方式采集流程
  17. 【备忘】李炎恢老师HTML5+CSS3教程与课件代码【共享完毕】下载
  18. 【经典算法】:银行金额大写转换
  19. PHP自动全局变量漏洞 rips工具使用
  20. 智安新闻丨智安网络与“南滨路国家级文化数字产业中心”就等保云业务展开成功签署战略合作协议

热门文章

  1. android destroy,Android初学者:onDestroy
  2. python 两个dataFrame取不同部分
  3. “F12键无效的解决方法
  4. Python实战系列(三)——基于Numpy和Matplotlib的图表绘制(折线图和堆积柱状图)
  5. P-value个人理解
  6. c语言宽字符与wchar,浅谈c++ 字符类型总结区别wchar_t,char,WCHAR
  7. char和wchar
  8. 第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目蓝桥杯JavaB组大赛软件类省赛第十二届第一场
  9. uniapp使用教程(包括下载、初次使用以及使用中的一些细节总结)
  10. 创维linux进入工厂模式,创维智能电视如何打开工厂模式(各个型号汇总)!