我试着在IntelliJ Idea (scala)中使用OpenCV,为此我从他们的官方网站下载了OpenCV-在安装OpenCV后,我得到了build/binopencv-480.jar文件.对于安装,我已经完成了(in Ubuntu)项:

$ sudo apt update && sudo apt install -y cmake g++ wget unzip
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
$ unzip opencv.zip
$ mkdir -p build && cd build
$ cmake ../opencv-4.x
$ make -j4
$ sudo make install

然后,我打开了我的IntelliJ idea ,并执行了以下步骤:

  1. 转到(file -> project structure -> modules)
  2. 点击+标志
  3. 精选(library -> java)
  4. Select 了那opencv-480.jar
  5. 点击apply,然后点击ok

以上步骤添加了JAR文件.然后,我通过执行以下操作来添加库路径:

  1. 转到(file -> project structure -> libraries)
  2. 已点击最近添加的库(opencv-480)
  3. 然后在右侧面板中,我点击了+符号
  4. Select lib文件夹,我安装openCV后得到的

经过以上的工作,现在我可以在我的scala项目中访问和使用openCV了.

但问题是,每当我对项目执行cleansbt-shell中的run操作时,它就会从项目 struct 中删除JAR文件.现在我想添加external jar file和设置lib folder pathbuild.sbt--但是我找不到任何关于这方面的帮助.

Guide me how can I add external jar file and use it as dependency in build.sbt.

推荐答案

我已经解决了以上问题.我所做的是:

  1. 在根目录下创建了一个opencv_lib文件夹.
  2. opencv-480.jar个文件放在这个opencv_lib文件夹中.
  3. opencv_lib文件夹中又制作了native_libs个文件夹.
  4. lib个文件夹(which I got after installing opencv)的文件放入那个native_libs文件夹.

然后最后在build.sbt中增加了一些行,我的项目的build.sbt是:

ThisBuild / version := "0.1.0-SNAPSHOT"

ThisBuild / scalaVersion := "2.13.4"

lazy val root = (project in file("."))
  .settings(
    name := "OpenCV-Check"
  )

run / fork := true

unmanagedBase := baseDirectory.value / "opencv_lib"

val openCVNativeLibPath = file("opencv_lib/native_libs")

run / javaOptions += s"-Djava.library.path=${openCVNativeLibPath.getAbsolutePath}"

然后我建立了这个项目,它为我工作.

https://www.scala-sbt.org/release/docs/Library-Dependencies.html

上面的链接帮助了我.感谢Gael J人的链接.

Java相关问答推荐

gitlab ci不会运行我的脚本,因为它需要数据库连接'

RxJava PublishSubject缓冲区元素超时

为什么我的ArrayList索引的索引总是返回-1?

';com.itextpdf.ext.html.WebColors已弃用

Spring Boot@Cachebale批注未按预期工作

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

如何在ApachePOI中将图像添加到工作表的页眉?

如何解释Java中for-each循环中对Iterable的强制转换方法引用?

Spring @Value default无法计算表达式

Java17支持哪个MapR版本?

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

当我在Java中有一个Synchronized块来递增int时,必须声明一个变量Volatile吗?

具有多个模式的DateTimeForMatter的LocalDate.parse失败

记录是类的语法糖吗?

Java嵌套流查找任意值

JavaFX复杂项目体系 struct

Java 17与Java 8双重表示法

当使用不同的参数类型调用时,为什么围绕Objects.equals的类型安全包装不会失败?

没有Google Play服务,Firebase Auth无法工作

简化每个元素本身都是 map 列表的列表