OpenCV是一个开源的计算机视觉算法库。
Open Source Computer Vision
它提供了Python和Java等的接口。
本文采用Eclipse集成开发工具
采用OpenCV4.5.3版本
1 下载OpenCV
OpenCV官网
https://sourceforge.net/projects/opencvlibrary/
下载的文件
2 解压,导出文件
双击下载的文件.
3 Eclipse项目添加jar包
4 jar包的依赖文件的配置
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条评论
点击登录参与评论