6

私は現在、Play 2.1 プロジェクトに取り組んでいます。このプロジェクトでは、Web サービスへのリクエストが、ユーザー提供の画像のダウンロード、サイズ変更と再トリミング、および既知の悪い写真のフィルター処理を処理します (たとえば、私たちはユーザーに会社のロゴをアップロードしてもらいたい)。OpenCV を使用してバックエンド作業を処理しようとしていますが、Java プロジェクトで動作する方法で IntelliJ に OpenCV jar を追加させることができないようです。

問題なく、ソースから OpenCV をビルドできました。これにより、次のフォルダーが残りました:/home/charles/opencv/release

このフォルダー内には、関心のある 3 つのファイルがあります。

  1. ビン/opencv-246.jar
  2. lib/cv2.so
  3. lib/libopencv_java246.so

jar ファイルを新しい Java ライブラリとして IntelliJ に追加しようとすると、一見すべてのクラス/メソッドが検出され、オートコンプリートを使用してコードを記述できます。また、それぞれのクラスまたはメソッドをクリックすると、適切なファイルが表示されます。

ただし、Play プロジェクトを実行しようとすると、次のエラーが発生します。

[info] Loading project definition from /home/charles/Github/ImageProject
[info] Set current project to ImageProject (in build file:/home/charles/Github/ImageProject/)

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

Server started, use Alt+D to stop

[info] Compiling 1 Java source to /home/charles/Github/ImageProject/target/scala-2.10/classes...
[error] /home/charles/Github/ImageProject/app/controllers/Application.java:7: error: package org.opencv.core does not exist
[error] import org.opencv.core.Core;
[error]                       ^

また、jarファイルのコピーをプロジェクトに直接追加して(opencv-246.jarをImageProject/libに配置して)、代わりにその場所からJavaライブラリを追加しようとしました。しかし、それは私に別のエラーを残すだけです:

java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path

問題の一部は、Java OpenCV ラッパーが使用するネイティブ ライブラリ (上記のファイル 2 または 3) に関連している可能性があると思われます。Eclipse では、jar ファイルを追加すると、ネイティブ ライブラリの場所を明示的に設定できるため、OpenCV が正常に動作します。これを使用して問題を解決するという提案を読みました:

-Djava.library.path=/home/charles/opencv/release/lib

しかし、それはうまくいかないようです(間違った場所に設定しているのかもしれませんが、プロジェクトの実行構成とIDE設定でJVMパラメーターとして設定しようとしましたが、どちらもそうではないようです使用または尊重されます)。

注: もう一度明確にするために、これは Play2 プロジェクトであり、Android プロジェクトではありません。Android 固有のヘルプがいくつかあるようですが、この場合は関係ありません。

これはかなり簡単なことのように思えますが、この時点で答えを見つけるために数日を費やしてきましたが、まだ何もありません. 何か案は?

追加の詳細: OpenCV ドキュメントの「Running SBT samples」に従ってみました: http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

また、同様のエラーが発生します。

charles@charles-VirtualBox:~/JavaSample$ sbt run
[info] Loading project definition from /home/charles/JavaSample/project
[info] Set current project to JavaSample (in build file:/home/charles/JavaSample/)
[info] Compiling 1 Java source to /home/charles/JavaSample/target/scala-2.10/classes...
[info] Running HelloOpenCV 
Hello, OpenCV
[error] (run-main) java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at HelloOpenCV.main(HelloOpenCV.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
[trace] Stack trace suppressed: run last compile:run for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
    at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) Nonzero exit code: 1
[error] Total time: 2 s, completed Jul 17, 2013 5:11:39 PM
4

3 に答える 3

0

Windows 64 ビット セット用

-Djava.library.path=/フルパス/OpenCV/build/java/x64

于 2013-08-03T00:27:48.150 に答える
0

lib/libopencv_java246.so を使用していたでしょう

.so ファイルをビルド ライブラリにマップすることは常に重要です。箱から出してすぐに動作すると思われます

于 2013-08-22T19:36:01.537 に答える