`
yjdingkai
  • 浏览: 18659 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java人脸识别在项目中的应用(一)

阅读更多

      本例程是识别图片中的人脸,并画出识别出的人脸的位置。在网上找了很久,用java实现人脸识别技术很难找到。多是依靠JNI 调用OpenCV本地方法实现的。那么这里先来说说这种方法:

        先认识一下JNI 和OpenCV

        JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

      OpenCV是Intel公司支持的开源计算机视觉库。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 

     将源代码中的dll文件(cv097.dll,cxcore097.dll,highgui097.dll,JNI2OpenCV.dll)放入C:\WINDOWS\system32目录下。

     现在开始上源码:

public class JNIOpenCV{ 
	public JNIOpenCV() {}
  static{ 
            System.out.println("开始加载JNI2OpenCV.dll");
            System.loadLibrary("JNI2OpenCV");
            System.out.println("加载完成");
  }  
   // 加载动态链接库
  public native int[] detectFace(int minFaceWidth, int minFaceHeight, String cascade, String filename);  
   // 声明本地方法    
}

 

public class FaceDetection {
	private JNIOpenCV myJNIOpenCV;
	public FaceDetection(String intputFileName,String outputFileName) {
		myJNIOpenCV = new JNIOpenCV();
		String filename = intputFileName;
		String outputFilename = outputFileName;
		String cascade = "F:\\detectface\\xml\\haarcascade_frontalface_alt2.xml";
		int[] detectedFaces = myJNIOpenCV.detectFace(40, 40, cascade, filename);
		int numFaces = detectedFaces.length / 4;
		if(numFaces > 0){
			System.out.println("有脸!有 "+ numFaces + " 张脸");
		}else{
			System.out.println("没有脸!");
		}
    	for (int i = 0; i < numFaces; i++) {
    		System.out.println("Face " + i + ": " + detectedFaces[4 * i + 0] + " " + detectedFaces[4 * i + 1] + " " + detectedFaces[4 * i + 2] + " " + detectedFaces[4 * i + 3]);
    	}
    	int[][] RectInt=new int[numFaces][4];
		for (int i = 0; i < numFaces; i++) 
		{      
		   RectInt[i][0]=detectedFaces[4 * i + 0];
		   RectInt[i][1]=detectedFaces[4 * i + 1];
		   RectInt[i][2]=detectedFaces[4 * i + 2];
		   RectInt[i][3]=detectedFaces[4 * i + 3];
		}
		    if(new DrawInImg(filename,outputFilename,RectInt).DrawRect())
					System.out.println("File create success ! ");
			else
					System.out.println("File create error ! ");
		}
    
    public static void main(String args[]) {
       FaceDetection myFaceDetection = new FaceDetection("F:\\detectface\\image\\tt.jpg","F:\\detectface\\image\\tt2.jpg");
    }   
}

 

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;

public class DrawInImg {

	private boolean isDone = false;
	private String inputFileName = "";
	private String outputFileName = "";
	private int[][] RectInt;

	public DrawInImg(String inputFileName, String outputFileName,
			int[][] RectInt) {
		this.inputFileName = inputFileName;
		this.outputFileName = outputFileName;
		this.RectInt = RectInt;
	}

	public boolean DrawRect() {
		try {
			FileInputStream fis = new FileInputStream(inputFileName);
			FileOutputStream fos = new FileOutputStream(outputFileName);
			BufferedImage img = ImageIO.read(fis);
			Graphics g = img.getGraphics();
			g.setColor(Color.GREEN);
			for (int i = 0; i < RectInt.length; i++) {
				for (int j = 0; j < RectInt[i].length; j++) {
					g.drawRect(RectInt[i][0], RectInt[i][1], RectInt[i][2],
							RectInt[i][3]);
					// System.out.print(RectInt[i][j]+" ");
				}
				System.out.print("\r\n");
			}

			img.flush();
			g.dispose();
			ImageIO.write(img, "JPG", fos);

			while (true) {
				if (new File(outputFileName).exists()) {
					this.isDone = true;
					break;
				}
			}

		} catch (IOException ioe) {
			ioe = null;
		}

		return this.isDone;
	}

}

 注意:以上代码不能放在包下面,否则会运行不成功的。(原因是dll编译的时候没有带上包,如需包还需重新编译dll)。

分享到:
评论

相关推荐

    java 人脸识别,一个开源项目.rar

    在实际应用中,Java人脸识别系统可能涉及到以下步骤: 1. 图像预处理:去除噪声,调整大小,灰度化等。 2. 人脸检测:使用Haar特征或者HOG等方法检测图像中的人脸区域。 3. 特征提取:使用上述提到的LBPH、EigenFace...

    java人脸识别源码

    Java人脸识别源码是一种基于计算机视觉技术的应用,它利用了特征脸识别原理,使得程序能够检测、识别人脸,无论是在实时的摄像头流中还是在静态的图像或视频文件中。这个项目采用JavaCV库,一个Java接口,为OpenCV等...

    java调用虹软人脸识别

    首先,需要在开发环境中配置虹软人脸识别的SDK,这可以通过下载并安装虹软人脸识别的SDK完成。...总之,Java调用虹软人脸识别是一个简单而又强大的过程,可以为我们的应用程序提供更加智能、便捷的人脸识别功能。

    java人脸识别源代码

    Java人脸识别源代码是一种基于计算机视觉技术的实现,用于在图像或视频流中检测、识别和追踪人脸。在Java中,这种技术通常利用OpenCV、DeepLearning4J等库来完成。OpenCV是一个开源的计算机视觉库,包含了各种图像...

    java百度人脸识别

    可以参考提供的链接(http://blog.csdn.net/weixin_39549656/article/details/79262895)中的教程,学习如何在实际项目中整合这些概念,构建一个完整的Java人脸识别系统。 总的来说,Java百度人脸识别是一个结合了...

    java调用 人脸识别接口demo

    总的来说,通过学习和实践这个"java调用人脸识别接口demo",你可以掌握如何在Java项目中集成和使用人脸识别技术,为你的应用增加强大的视觉功能。无论是安全认证、用户界面优化还是数据分析,这些知识都将对你的编程...

    java实现人脸识别

    在Java中实现人脸识别是一项涉及深度学习和计算机视觉技术的任务。OpenCV是一个强大的开源库,它提供了丰富的功能,包括图像处理、特征检测以及人脸识别。在这个小demo中,我们主要会探讨如何利用OpenCV库来实现这一...

    src.rar_SRC 人脸识别_java 人脸识别_java人脸识别_人脸识别_人脸识别Java

    这个名为"src.rar_SRC 人脸识别_java 人脸识别_java人脸识别_人脸识别_人脸识别Java"的压缩包文件,显然包含了一个使用Java编程语言实现的人脸识别系统。Java作为一种跨平台、面向对象的语言,因其稳定性和丰富的库...

    百度人脸识别windows java离线sdk

    在本文中,我们将深入探讨“百度人脸识别Windows Java离线SDK”的相关知识点,这是一款专为Windows平台设计的、基于Java的计算机视觉库,主要用于实现高效、精准的人脸识别功能。在人工智能领域,尤其是在计算机视觉...

    腾讯身份证验证人脸识别代码java实例

    在IT行业中,腾讯AI提供了强大的身份验证服务,其中包括身份证识别和人脸识别技术。这些技术广泛应用于各种场景,如在线注册、实名认证、金融交易安全等。以下是对标题和描述中涉及知识点的详细解释: 1. **腾讯AI...

    java 实现人脸识别

    在Java中实现人脸识别是一项复杂而有趣的任务,涉及到计算机视觉(Computer Vision)领域的知识,特别是OpenCV库的应用。OpenCV是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法,广泛应用于图像...

    java人脸识别

    总结,这个"java人脸识别"项目利用OpenCV在Android平台上实现了人脸识别功能,尽管已验证成功,但还需持续优化以提高准确率。通过理解OpenCV的工作原理、人脸检测和识别的步骤、以及在移动平台上的性能优化,我们...

    java人脸识别例程

    总结来说,"java人脸识别例程"涵盖了计算机视觉、机器学习和Java编程等多个领域的知识,通过这个例程,开发者可以学习到如何在Java环境中集成和应用人脸识别技术,以及如何处理与之相关的数据和性能问题。

    基于百度API实现的人脸识别demo-Java前后端分离实现

    在本项目"基于百度API实现的人脸识别demo-Java前后端分离实现"中,开发者采用百度的人脸识别技术,结合Java编程语言,构建了一个完整的、前后端分离的应用系统。这个系统涵盖了人脸注册、人脸登录、人脸检测、以及...

    java+虹软人脸识别检测

    通过以上步骤,我们可以构建一个基于Java和虹软人脸识别的系统,实现在后端高效、准确地检测上传照片中的人脸。这种技术在现代数字服务中有着广泛的应用,如在线身份验证、社交平台、门禁系统等。不过,随着技术的...

    Android 人脸识别+人脸匹配(OpenCV+JavaCV)

    在Android平台上实现人脸识别和人脸匹配是一项复杂而有趣的任务,它涉及到计算机视觉和机器学习领域的技术。在这个项目中,开发者使用了OpenCV和JavaCV库来完成这一目标。OpenCV(Open Source Computer Vision ...

    人脸识别小项目

    通过这个项目,我们可以深入学习如何在Java环境中搭建和应用人脸识别系统。 首先,人脸识别基于深度学习模型,如卷积神经网络(CNN),这些模型能够从图像中提取特征,然后进行人脸比对。Java中虽然不像Python那样...

Global site tag (gtag.js) - Google Analytics