opencv - 将 JavaCV 与 Kotlin 结合使用

标签 opencv intellij-idea kotlin

我目前正在尝试在 Kotlin 中使用 JavaCV 启动一个项目。我使用 IntelliJ Idea 作为我的 IDE。我正在使用 JavaCV 1.3.2 和 OpenCV 3.20。 这是我对 OpenCV 模块依赖项的设置:

OpenCV Project Library Configuration

对于 JavaCV:

JavaCV Project Library Configuration

在依赖项中,我在 javacv 之前有 opencv。 为了测试 OpenCV 是否存在且有效,我编写了以下代码进行测试。因为我可以 loadLibrary 并且版本号显示正确,所以我可以假设 OpenCV 确实在工作。

import org.opencv.core.Core
import org.opencv.core.Mat
import org.opencv.core.CvType
import org.opencv.core.Scalar
import org.bytedeco.javacv.OpenCVFrameGrabber

fun main(args : Array<String>) {
    println("Test Built Successfully")
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME)
    println("Running OpenCV Version ${Core.VERSION}")
    val grabber = OpenCVFrameGrabber(1)
}

我们初始化抓取器的那一行引发了以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path
Caused by: java.lang.UnsatisfiedLinkError: no opencv_imgproc320 in java.library.path

也许我在这里遗漏了一些东西,但我已经按照 JavaCV 的 Git 存储库中的 README.md 提供的说明进行操作。我还没有在 StackOverflow 上看到任何其他人尝试将这个库与 Kotlin 一起使用,尽管我已经查看了一些关于使用 java 引发相同异常的帖子。

最佳答案

在 Kotlin 中处理此错误与 Java 没有什么不同;您需要为 opencv 指定 native 库的路径。默认情况下,在 Windows 上,它会在 PATH 环境变量中设置的任何内容中查找 native 库。

您还可以通过指定系统属性 java.library.path(如错误消息所示)明确指定要查找 native 库的目录。

例如,您可以添加这样的运行配置: run config

${PATH_TO_DYNAMIC_LIB} 将是 native 库 opencv_imgproc320.dll 所在的位置 - 我认为在您的情况下它将是 C:/Users/ms/IdeaProjects/CVTest/opencv/build/java/x64.

关于opencv - 将 JavaCV 与 Kotlin 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821793/

相关文章:

c++ - 围绕 avcodec_open/close 的线程锁定

java - 没有Maven Central的Kotlin和Gradle?

java - 在intellij中创建SQLite数据库

kotlin - 卡在给定数组的逻辑上

opencv - 使用特征检测检测行人过路灯 'Green man'

android - 编译包含OpenCV header 的JNI库

c++ - OpenCV - 分配运算符 "not working"?

intellij-idea - java : You aren't using a compiler supported by lombok, so lombok 将无法工作并已被禁用

android-recyclerview - Kotlin 客户界面声明

kotlin - 如何设置 Kotlin/Native 项目以便将资源与可执行文件放在一起?