2021-09-17 17:11

Java利用OpenCV实现--图片人脸识别

码自答

JavaEE

(1940)

(0)

收藏

OpenCV是一个开源的计算机视觉算法库。

Open Source Computer Vision

它提供了Python和Java等的接口。

image.png

本文采用Eclipse集成开发工具 

采用OpenCV4.5.3版本


1 下载OpenCV

OpenCV官网

https://sourceforge.net/projects/opencvlibrary/

image.png

下载的文件

image.png


2 解压,导出文件

双击下载的文件.

image.png

image.png


3 Eclipse项目添加jar包

image.png

image.png

image.png


4 jar包的依赖文件的配置

image.png

image.png


5 Java代码的实现

package com.wanmait.test;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class TestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
		//载入库文件
		CascadeClassifier cascade = new CascadeClassifier("C:\\Users\\wanmait\\Downloads\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
		//加载OpenCV人脸识别文件  haarcascade_frontalface_alt.xml专门针对人脸识别的文件  路径为OpenCV导出的路径
		
		if(cascade.empty()) {
			System.out.println("人脸识别文件加载失败");
			return;
		}
		
		MatOfRect matRect = new MatOfRect();
		//存放检测的人脸的坐标等信息
		
		Mat image = Imgcodecs.imread("d:/1.jpg");
		//加载本地图片文件
		
		if(image.empty()) {
			System.out.println("本地文件加载失败");
			return;
		}
		
		//检测本地文件人脸--人脸识别
		cascade.detectMultiScale(image, matRect);
		//image本地加载的图片  检测的多个人脸信息的数据保存到matRect中间
		
		//对检测的每张人脸 画矩形   
		for(Rect rect:matRect.toArray()) {
			Imgproc.rectangle(image, new Point(rect.x,rect.y), new Point(rect.x+rect.width,rect.y+rect.height), new Scalar(0,255,0),1);
			//画矩形  Scalar画的矩形的颜色   参数1表示的矩形的线的像素
		}
		
		//利用图形界面 显示检测结果
		HighGui.imshow("人脸识别", image);
		HighGui.waitKey(0);
	}

}




执行结果:
[object Object]
出现以上异常,问题出在没有加载jar包的依赖
解决方法,重新操作第4步

错误二:

Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.5.3) C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

人脸识别文件加载失败。

解决方法

检查加载OpenCV的人脸识别文件的代码。

new CascadeClassifier("")

0条评论

点击登录参与评论