423 Star 3.7K Fork 1.6K

yuxue / yx-image-recognition

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
01_开发环境搭建.md 3.94 KB
一键复制 编辑 原始数据 按行查看 历史
yuxue 提交于 2022-03-14 10:59 . 切换数据库文档

基础概念

  • OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库;轻量级而且高效,由一系列C函数和少量C++类构成;该库的核心是用C++编写的
  • 本项目是java语言项目,其本质是通过java调用opencv c++的dll 动态链接库实现的。
  • 本项目,提供了两种方式去调用c++的接口,
    • 1、通过JavaCPP调用,JavaCPP是一个开源库,它提供了在 Java 中高效访问本地 C++的方法;这种方式是原版EasyPR-Java项目的使用方式,在这里更新了javacpp版本,以及切换了依赖包的引用方式为maven pom引入(最新版本已经弃用,代码保留在src/main/resources/easypr-java目录下)

    • 2、通过opencv官方提供的java 语言的api调用,推荐这种方式调用,毕竟是官方的版本;

      以上两种方式,本质上都是java调用c++的接口实现,具体可以自行了解一下jni或者jna,这里不做深入介绍了

开发环境搭建

软件版本

  • jdk 1.8.61+
  • maven 3.0+
  • opencv 4.0.1 ; javacpp1.4.4;opencv-platform 4.0.1-1.4.4
  • spring boot 2.1.5.RELEASE

操作步骤

  • 安装jdk

  • 安装maven,必须!建议设置阿里云镜像库

  • 项目导入eclipse或者idea,不需要进行额外的配置,启动Application.java的main方法即可启动整个web项目

  • 执行util或者train包下类的main方法,即可执行特定的方法进行测试

  • 导入的项目启动/执行异常,请先确认lib目录下的opencv-401.jar是否有添加项目依赖、以及opencv_java401.dll动态库是否能正常加载; 其次确认执行的方法中,图片路径是否正确:文件要存在,且文件路径不能包含中文及特殊字符

  • 关于dll的加载问题,可以参考的我的博客:https://blog.csdn.net/weixin_42686388/article/details/110374952

  • 官方的api调用(推荐使用):

    • opencv_java401.dll即为opencv 的dll动态链接库,eclipse开发环境放在项目根目录下即可正常使用;
    • 官方下载对应版本的安装包,即可获取到对应版本的opencv-XXX.jar、opencv_javaXXX.dll
    • 其他操作系统下的调用,切换掉dll到指定操作系统的包即可
  • javacpp方式调用(已弃用,停止相关更新):

    • 去掉org.opencv.*相关的代码
    • 拷贝src/main/resources/easypr-java目录下文件,放到对应的包目录(查看文件的package行),没有的自行创建
    • 添加pom依赖坐标:
         <!-- classifier用于区分操作系统平台; 其他平台: linux-x86、linux-x86_64、ios-x86_64等 -->
         <!-- <dependency>
             <groupId>org.bytedeco.javacpp-presets</groupId>
             <artifactId>opencv</artifactId>
             <version>4.0.1-1.4.4</version>
             <classifier>windows-x86_64</classifier>
         </dependency> -->
    • maven update 一下项目即可
  • 将PlateDetect文件夹拷贝到d盘下,默认车牌识别操作均在d:/PlateDetect/目录下处理; 可以修改Constant.java的常量参数控制

  • spring boot方式运行项目,浏览器上输入 http://localhost:16666/index 即可打开操作界面

数据库切换

  • 默认使用sqlite的配置即可正常启动;sqlite是轻量级的关系数据库,src\main\resources\yx_image_recognition.db 即数据库文件,里面有表结构、数据等;
  • 如果切换成mysql,需要修改一部分代码: resources/mapper目录下的所有xml文件;里面的insert标签代码,是sqlite的语法,需要切换成mysql的语法:
      <insert id="insert" parameterType="......">
          <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
              select seq from sqlite_sequence WHERE name = 't_plate_file'
          </selectKey>
          .......
      </insert>
    切换为:
      <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="......">
          .......
      </insert>
Java
1
https://gitee.com/admin_yu/yx-image-recognition.git
git@gitee.com:admin_yu/yx-image-recognition.git
admin_yu
yx-image-recognition
yx-image-recognition
master

搜索帮助