Opencv 将JavaCV与Kotlin一起使用

Opencv 将JavaCV与Kotlin一起使用,opencv,intellij-idea,kotlin,Opencv,Intellij Idea,Kotlin,我目前正试图在Kotlin中使用JavaCV启动一个项目。我使用IntelliJ Idea作为我的IDE。我正在使用JavaCV 1.3.2和OpenCV 3.20。 这是我对OpenCV模块依赖项的设置: 对于JavaCV: 在附件中,我在javacv之前有opencv。 为了测试OpenCV是否存在和有效,我编写了以下代码进行测试。由于我可以加载库,并且版本号显示正确,我可以假设OpenCV实际上正在工作 import org.opencv.core.Core import org.op

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

对于JavaCV:

在附件中,我在javacv之前有opencv。 为了测试OpenCV是否存在和有效,我编写了以下代码进行测试。由于我可以加载库,并且版本号显示正确,我可以假设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)
}

也许我在这里遗漏了一些东西,但我遵循了Git JavaCV存储库中README.md提供的说明。我没有看到其他人尝试在StackOverflow上使用Kotlin库,不过我已经查看了一些帖子,其中提到了使用java引发的相同异常。

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

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

例如,您可以添加如下运行配置:


其中
${PATH\u TO_DYNAMIC\u LIB}
将是本机LIB
opencv\u imgproc320.dll
所在的位置-我认为在您的情况下,它将是
C:/Users/ms/IdeaProjects/CVTest/opencv/build/java/x64

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

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

例如,您可以添加如下运行配置:


其中
${PATH\u TO\u DYNAMIC\u LIB}
将是本机库
opencv\u imgproc320.dll
所在的位置-我认为在您的情况下,它将是
C:/Users/ms/IdeaProjects/CVTest/opencv/build/java/x64

我可以通过将VM选项留空,并在JavaCV库中添加所有必要的opencv库作为本机库路径来解决这个问题配置。

我可以通过将VM选项留空,并在JavaCV库配置中添加所有必要的OpenCV库作为本机库路径来解决此问题。

在MacOS上,您不需要安装本机库。在OpenCV3.41上,从

<!-- https://mvnrepository.com/artifact/org.openpnp/opencv -->
    <dependency>
      <groupId>org.openpnp</groupId>
      <artifactId>opencv</artifactId>
      <version>3.4.2-1</version>
    </dependency>
这让我了解了如何在代码中使用nu.pattern

static {
    nu.pattern.OpenCV.loadShared();
    System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
}

这段开场白代码使以前失败的示例应用程序能够运行。

在MacOS上,您不需要安装本机库。在OpenCV3.41上,从

<!-- https://mvnrepository.com/artifact/org.openpnp/opencv -->
    <dependency>
      <groupId>org.openpnp</groupId>
      <artifactId>opencv</artifactId>
      <version>3.4.2-1</version>
    </dependency>
这让我了解了如何在代码中使用nu.pattern

static {
    nu.pattern.OpenCV.loadShared();
    System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME);
}

此序言代码使以前失败的示例应用程序能够运行。

更改VM选项中的库路径会破坏intellij中配置的其他库,因为它们没有相同的库路径,如果指定,这是用来代替您在配置库时为库指定的路径的。更改VM选项中的库路径会破坏在intellij中配置的其他库,因为它们没有相同的库路径,如果指定,则将使用此路径代替您在配置库时为库指定的路径。