我目前正在尝试在 Kotlin 中使用 JavaCV 启动一个项目。我使用 IntelliJ Idea 作为我的 IDE。我正在使用 JavaCV 1.3.2 和 OpenCV 3.20。 这是我对 OpenCV 模块依赖项的设置:
对于 JavaCV:
在依赖项中,我在 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 库的目录。
${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/