OpenCV – 4.10.0 Java 包里为什么没有 org.opencv.img_hash 这个包?

阅读 1.1k
avatarAI BotBETA

在OpenCV的Java库中,org.opencv.img_hash包的缺失通常是因为该特定模块(img_hash)在OpenCV的Java绑定中可能并未被包括或支持。img_hash模块是OpenCV中用于图像哈希算法的一个模块,这些算法通常用于图像检索或图像内容的快速比较。

然而,OpenCV的Java接口可能不总是包含所有C++库中的模块,这可能是由于多种原因,包括但不限于:

  1. 模块支持性:某些模块可能在C++版本中非常成熟,但在Java版本中可能还没有得到完全的支持或实现。
  2. 资源限制:开发和维护Java接口需要额外的资源和时间,特别是对于复杂或特定用途的模块。
  3. 社区需求和优先级:OpenCV的开发可能基于社区的需求和优先级来决定哪些模块被包含在Java接口中。

如果你需要使用图像哈希算法,并且OpenCV的Java库不支持img_hash模块,你有几个替代方案:

  • 使用C++版本的OpenCV:如果你的应用允许,你可以通过JNI(Java Native Interface)从Java代码中调用C++编写的图像哈希功能。
  • 寻找其他库:可能存在其他Java库,如Apache Commons Imaging或其他图像处理库,它们可能提供了你需要的图像哈希功能。
  • 自定义实现:如果你对图像哈希算法有深入的了解,你可以尝试自己实现一个。

总之,OpenCV的Java库中没有org.opencv.img_hash包很可能是因为该模块在Java接口中未被支持。为了解决这个问题,你可以考虑上述的替代方案。

1 个回答

Windows或者Linux
需要从OpenCV的官方仓库中获取并构建这些额外的模块,然后才可以在OpenCV 4.10.0 Java包中使用org.opencv.img_hash模块:

步骤一:获取OpenCV和OpenCV_contrib源代码

  1. 下载OpenCV源代码

    • 访问OpenCV官方网站,进入下载页面。
    • 选择你需要的版本(比如4.10.0),下载源代码压缩包。
    • 或者,使用Git命令克隆OpenCV源码库:

      git clone https://github.com/opencv/opencv.git
      cd opencv
      git checkout 4.10.0
  2. 下载OpenCV_contrib源代码

    • 从OpenCV的GitHub仓库下载OpenCV_contrib源码库:

      git clone https://github.com/opencv/opencv_contrib.git
      cd opencv_contrib
      git checkout 4.10.0

步骤二:配置和构建OpenCV

在Ubuntu系统下

  1. 安装CMake

    sudo apt-get update
    sudo apt-get install cmake
  2. 创建构建目录

    mkdir -p build
    cd build
  3. 运行CMake配置构建环境

    cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
  4. 编译OpenCV

    make -j$(nproc)
  5. 安装OpenCV

    sudo make install

在Windows 10系统下

  1. 安装CMake

  2. 安装Visual Studio

    • 下载并安装最新版本的Visual Studio,并确保安装了C++开发工具。
  3. 创建构建目录

    • 在OpenCV源代码目录下,创建一个新的构建目录:

      mkdir build
      cd build
  4. 运行CMake配置构建环境

    • 打开CMake GUI。
    • 在 "Where is the source code" 字段中,选择OpenCV源码目录。
    • 在 "Where to build the binaries" 字段中,选择刚刚创建的构建目录。
    • 点击 "Configure" 按钮,并选择使用Visual Studio的构建工具。
    • 在配置选项中,确保包含OpenCV_contrib模块:

      OPENCV_EXTRA_MODULES_PATH=<路径到opencv_contrib>/modules
    • 点击 "Generate" 按钮生成Visual Studio解决方案文件。
  5. 编译OpenCV

    • 打开生成的Visual Studio解决方案文件 (.sln 文件)。
    • 选择 "Release" 模式,然后构建解决方案(Build Solution)。
  6. 安装OpenCV

    • 在Visual Studio中构建完成后,运行以下命令进行安装:

      msbuild INSTALL.vcxproj /p:Configuration=Release

步骤三:生成Java包

  1. 在CMake中启用Java支持

    • 重新运行CMake配置命令,确保启用Java支持:

      cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -DBUILD_JAVA=ON ..
  2. 编译Java包

    • 再次运行Make命令编译Java包(在Windows中使用Visual Studio进行编译):

      make -j$(nproc)
  3. 生成和安装jar文件

    • 安装生成的jar文件:

      sudo make install

步骤四:验证生成的jar文件

  1. 定位生成的jar文件

    • 通常生成的jar文件会在 build/bin 目录中,找到生成的jar文件,例如 opencv-410.jar
  2. 查看jar文件内容

    • 使用以下命令查看jar文件中的内容,验证是否包含 org.opencv.img_hash 包:

      jar tf path/to/your/opencv-410.jar | grep img_hash
  3. 导入并使用该包

    • 创建一个简单的Java程序,验证生成的jar文件中是否包含 org.opencv.img_hash 包:

      import org.opencv.core.Core;
      import org.opencv.img_hash.ImgHashBase;
      
      public class Main {
          static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
      
          public static void main(String[] args) {
              ImgHashBase hasher = ImgHashBase.create();
              System.out.println("img_hash module is available.");
          }
      }

步骤五:运行验证程序

  1. 编译和运行

    • 在终端中编译并运行上述Java程序,确保没有错误,且能够输出 img_hash module is available.

      javac -cp .:opencv-410.jar Main.java
      java -cp .:opencv-410.jar Main

通过这些详细的步骤,你可以在Windows 10和Ubuntu系统中成功使用OpenCV的org.opencv.img_hash模块。

推荐问题
宣传栏