如何在 Scala 中调用 cvLoadImage?

how to call cvLoadImage in Scala?

我想在 Scala 中使用 javaCV,并根据此处给出的说明编写了 build.sbt https://github.com/bytedeco/javacv)。我正在尝试 运行 样本的 Scala 版本更平滑,并写了:

import org.bytedeco.javacpp.opencv_core._
import org.bytedeco.javacpp.opencv_imgproc._
import org.bytedeco.javacpp.opencv_imgcodecs._

object Face{

    def main(args: Array[String]){
       //IplImage image = cvLoadImage("test.jpg")
       //if(image == null){ 
           println("hello")
       //}
   }
}

单独的导入语句不会导致任何错误。但是,当我取消注释时,由于错误我无法编译。我的代码正确吗?还是在使用我不尊重的 java 代码时有一些技巧?我还发现有人提到他们无法初始化 class https://github.com/bytedeco/javacpp/issues/1(这个问题应该已经解决了)。

[error] /Users/developer/Desktop/scala/face/face.scala:9: value image is not a member of object org.bytedeco.javacpp.opencv_core.IplImage
[error]         IplImage image = cvLoadImage("test.jpg")
[error]                  ^
[error] /Users/developer/Desktop/scala/face/face.scala:10: not found: value image
[error]         if(image == null){ 
[error]            ^
[error] two errors found
[error] (compile:compileIncremental) Compilation failed

IplImage image = cvLoadImage("test.jpg")

这不是您在 Scala 中声明变量的方式。应该是 val image = ...val image: IplImage = ....

这是一个 Scala 语法错误。在 Scala 中,您使用 val(对于不可变值)或 var(对于可变值)声明一个值("variable"),然后是名称,然后是可选的类型,所以你的行:

IplImage image = cvLoadImage("test.jpg") // Java declaration syntax

变成:

val image: IplImage = cvLoadImage("test.jpg") // full Scala syntax

或者只是:

val image = cvLoadImage("test.jpg") // typically sufficient Scala syntax