当前位置:   article > 正文

Spring Boot结合OpenCV进行人脸识别_springboot opencv 人脸识别

springboot opencv 人脸识别

项目架构

  1. 后端:Spring Boot。
  2. 视觉框架:OpenCV。

文件结构

  • src/main/java:Spring Boot的主目录,包含类、控制器、服务、DLL动态链接库、data/haarcascades分类器等。
  • src/main/resources:配置文件、静态资源等。

OpenCV依赖

  • 下载完毕后,进行解压(我的是opencv-4.10.0-windows)。
  • 将解压文件中的 opencv/build/java 文件夹中的所有文件复制到 ${project.basedir}/lib/ 中。
  • 导入opencv依赖(pom.xml
  1. <dependency>
  2. <groupId>cn.lz.zy</groupId>
  3. <artifactId>opencv</artifactId>
  4. <version>4.10.0</version>
  5. <scope>system</scope>
  6. <systemPath>${project.basedir}/lib/opencv-4100.jar</systemPath>
  7. </dependency>

实现

添加VM Options

 可根据自身需求设置library路径

-Djava.library.path=C:\MyFiles\Projects\Spring_Boot_Projects\opencv_demo\lib\x64

人脸识别测试

将opencv中的opencv/sources/data目录中文件复制到项目/data中。

  1. import org.opencv.core.*;
  2. import org.opencv.objdetect.CascadeClassifier;
  3. import org.opencv.videoio.VideoCapture;
  4. import static org.opencv.highgui.HighGui.*;
  5. import static org.opencv.imgproc.Imgproc.*;
  6. /**
  7. * @author zy
  8. * @date 2024/6/24
  9. * @Description 人脸视频测试
  10. */
  11. @Slf4j
  12. public class FaceDetection {
  13. static {
  14. System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  15. String systemProperties = String.valueOf(System.getProperties().get("os.arch"));
  16. log.info("系统架构:{}", systemProperties);
  17. }
  18. static CascadeClassifier faceDetector = new CascadeClassifier("data/haarcascades/haarcascade_frontalface_alt.xml");
  19. public static void main(String[] args) {
  20. //获取摄像头
  21. VideoCapture capture = new VideoCapture(0);
  22. //判断摄像头是否打开
  23. if (!capture.isOpened()) {
  24. log.info("摄像头打开失败");
  25. return;
  26. }
  27. //循环读取摄像头数据
  28. while (true) {
  29. Mat frame = new Mat();
  30. //读取摄像头数据
  31. capture.read(frame);
  32. Mat grayFrame = new Mat();
  33. if (frame.empty()) {
  34. log.info("没有获取到视频流");
  35. break;
  36. }
  37. cvtColor(frame, grayFrame, COLOR_BGR2GRAY);
  38. equalizeHist(grayFrame, grayFrame);
  39. MatOfRect faces = new MatOfRect();
  40. faceDetector.detectMultiScale(grayFrame, faces);
  41. for (Rect rect : faces.toArray()) {
  42. rectangle(frame, rect, new Scalar(0, 255, 0), 2);
  43. }
  44. imshow("人脸检测:", frame);
  45. if (waitKey(1) == 27) {
  46. break;
  47. }
  48. }
  49. capture.release();//释放摄像头资源
  50. destroyAllWindows();//释放窗口资源
  51. }
  52. }

运行结果


总结

  •  确保Maven引入本地JAR包的正确性。

  • VM Options的正确配置。

  • 获取摄像头,并确保摄像头可用。

  • 灰度图、人脸检测的正确调用。

  • 资源释放。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/938191
推荐阅读
相关标签
  

闽ICP备14008679号