当前位置:   article > 正文

springboot免安装整合Opencv兼容windows和linux_springboot集成openpnp

springboot集成openpnp

OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,提供了丰富的功能和工具,用于处理图像和视频数据。其主要功能包括但不限于以下几个方面:

  1. 图像处理:包括图像加载、保存、缩放、裁剪、旋转、平移、色彩空间转换(如RGB、HSV等)、图像平滑(模糊、滤波)、图像增强(对比度、亮度调整)、边缘检测、形态学操作(膨胀、腐蚀)、图像分割等。

  2. 视频分析:提供了视频流的读取、处理、分析和写入功能,包括视频的读取、保存、截取、帧间差分、光流估计等。

  3. 特征检测与描述:包括关键点检测(如Harris、SIFT、SURF、FAST等)、描述子生成(如ORB、BRIEF、FREAK等)以及特征匹配算法。

  4. 目标检测与跟踪:包括人脸检测、物体检测(如Haar级联检测器、HOG+SVM检测器等)、目标跟踪(如基于卡尔曼滤波器、均值迁移、CamShift等)。

  5. 摄像头标定:提供了相机标定工具,用于校准相机的内参和外参,用于后续的相机几何校正、立体视觉等应用。

  6. 三维重建与视觉SLAM:包括立体视觉匹配、三维点云重建、结构光三维重建、基于深度学习的三维重建、视觉SLAM(Simultaneous Localization and Mapping)等。

  7. 深度学习集成:提供了深度学习模块,可以用于训练和部署深度学习模型,支持常见的深度学习框架(如TensorFlow、PyTorch)和模型(如Caffe、Darknet、OpenVINO)。

  8. 计算机视觉工具:包括图像匹配、图像拼接、图像检索、目标识别、图像分析、图像修复、图像转换等。

对于小编来说用的最多的功能为区域找图,结合Robot类的键盘鼠标控制,可以实现自动化测试,游戏辅助,比如结合人脸识别+鼠标移动就可以实现射击类游戏的自动瞄准(俺只是好奇,俺没有用,别骂俺是挂壁),再比如某些养成游戏,可以做个小机器人完成每日任务,养他1000个号,养肥了去卖钱(同一个ip可能会封号,小编也没遇到啥好的解决办法,有好方案的可以留言)

pom.xml引入spring基础包和opencv依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <parent>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-starter-parent</artifactId>
  7. <version>2.2.2.RELEASE</version>
  8. <relativePath/>
  9. </parent>
  10. <groupId>com.lxw</groupId>
  11. <artifactId>robot</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>robot-study</name>
  14. <description>robot-study</description>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-web</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-test</artifactId>
  26. <scope>test</scope>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.openpnp</groupId>
  30. <artifactId>opencv</artifactId>
  31. <version>4.8.1-0</version>
  32. </dependency>
  33. </dependencies>
  34. <build>
  35. <plugins>
  36. <plugin>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-maven-plugin</artifactId>
  39. </plugin>
  40. </plugins>
  41. </build>
  42. </project>

加载opencv动态库

  1. import org.springframework.beans.factory.annotation.Value;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import javax.annotation.PostConstruct;
  5. @SpringBootApplication
  6. public class Application {
  7. public static void main(String[] args) {
  8. SpringApplication.run(Application.class, args);
  9. }
  10. @Value("${opencv.path}")
  11. private String opencvPath;
  12. @PostConstruct
  13. public void init() {
  14. // 加载opencv库
  15. System.load(opencvPath);
  16. }
  17. }

也可以在配置类中加载,只要保证能在使用前加载进来就行

配置文件

由于opencv动态库不能跨平台使用,所以要区分环境,windows下是opencv_java4.8.0.dll这种格式,linux下是libopencv_java480.so这种格式,默认本地使用dev环境,动态库文件见附件

application.properties

spring.profiles.active=dev

application-dev.properties

  1. opencv.path=E:\\code\\robot-study\\robot-study-service\\src\\main\\resources\\lib\\opencv\\opencv_java481.dll
  2. opencv.image.path=C:\\Users\\Administrator\\Desktop\\opencv\\

application-prod.properties

  1. opencv.path=/root/opencv/libopencv_java480.so
  2. # 这里直接保存到了nginx下,通过路径可以直接访问
  3. opencv.image.path=/usr/local/nginx/opencv/

示例代码(生成素描图片)

 原图

效果图

代码示例

  1. @Value("${opencv.image.path}")
  2. private String path;
  3. @RequestMapping("/sketch")
  4. public Object sketch(MultipartFile file) throws Exception {
  5. byte[] bytes = file.getBytes();
  6. // 使用前确保opencv库已加载,否则会报错
  7. MatOfByte matOfByte = new MatOfByte(bytes);
  8. Mat img = Imgcodecs.imdecode(matOfByte, Imgcodecs.IMREAD_COLOR);
  9. // 检查图像是否成功加载
  10. if (img.empty()) {
  11. throw new RuntimeException("读取图片失败");
  12. }
  13. // 灰度图片
  14. Mat gray = new Mat();
  15. Imgproc.cvtColor(img, gray, Imgproc.COLOR_BGR2GRAY);
  16. // 高斯去噪
  17. Mat blurredImage = new Mat();
  18. Imgproc.GaussianBlur(gray, blurredImage, new Size(21, 21), 0);
  19. // 融合原始灰度图像和模糊图像
  20. Mat sketchImage = new Mat();
  21. Core.divide(gray, blurredImage, sketchImage, 256.0);
  22. String filename = path + file.getOriginalFilename();
  23. // 保存图片
  24. Imgcodecs.imwrite(filename, sketchImage);
  25. return filename;
  26. }

测试地址

http://150.158.33.191/api/open/write

opencv其他功能

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

闽ICP备14008679号