2015-12-05 3 views
1

Je voudrais utiliser javaCV dans Scala, et j'ai écrit le build.sbt selon les instructions données ici https://github.com/bytedeco/javacv). Je suis en train d'exécuter une version Scala de la plus lisse de l'échantillon, et ont écrit:Comment appeler cvLoadImage en 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") 
     //} 
    } 
} 

Les déclarations d'importation seul ne cause aucune erreur. Cependant, lorsque je ne commente pas, je ne suis pas en mesure de compiler en raison d'erreurs. Est-ce que mon code est correct? ou y at-il une astuce lors de l'utilisation du code java que je n'ai pas respecté? J'ai également trouvé quelqu'un mentionnant qu'ils ne peuvent pas initialiser la classe https://github.com/bytedeco/javacpp/issues/1 (et le problème aurait dû être résolu).

[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 

Répondre

4

Il s'agit d'une erreur de syntaxe scala. En Scala, vous déclarez une valeur (une « variable ») en utilisant soit val (pour une valeur immuable) ou var (pour une valeur mutable), suivi du nom, puis éventuellement le type, de sorte que votre ligne:

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

devient:

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

ou tout simplement:

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

merci et désolé - je aurais dû pensé à cela. Je dois me concentrer sur le Java .. – stian

+0

lorsque cela est corrigé, je reçois cette erreur Classe java.lang.AutoCloseable pas trouvé - continue avec un talon. Ce serait parce qu'ils ont apporté des modifications au contenu du paquet, non? – stian

+0

@stian Je ne suis pas sûr - cela pourrait aider à savoir où dans votre code vous obtenez cette erreur. Vous devriez poser cette question comme une question distincte. – Shadowlands

0

IplImage image = cvLoadImage("test.jpg")

Ce n'est pas comment vous déclarez une variable à Scala. Il devrait être val image = ... ou val image: IplImage = ....