0

安装说明:http ://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

我已经下载了所有东西。一切似乎都在工作,除非我运行这个示例程序:

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Main {

public static void main(String[] args) {
    System.out.println("Welcome to OpenCV " + Core.VERSION);
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
    System.out.println("m = " + m.dump());
}

}

我得到输出:

m = [1, 0, 0;
     0, 1, 0;
     0, 0, 1]

(我希望这是正确的)。

但我也收到这些错误消息:

objc[63784]: Class CVWindow is implemented in both /Users/.../cv2.so and /Users/... /libopencv_java246.dylib. One of the two will be used. Which one is undefined.
objc[63784]: Class CVView is implemented in both /Users/.../cv2.so and /Users/.../libopencv_java246.dylib. One of the two will be used. Which one is undefined.
objc[63784]: Class CVSlider is implemented in both /Users/.../cv2.so and /Users/.../libopencv_java246.dylib. One of the two will be used. Which one is undefined.
objc[63784]: Class CaptureDelegate is implemented in both /Users/... /cv2.so and /Users/jsuit/opencv/lib/libopencv_java246.dylib. One of the two will be used. Which one is undefined.

我曾尝试将 cv2.so 文件移动到另一个文件夹,但随后程序将无法编译。

4

1 回答 1

0

据我所知,问题必须与对最终包含在 Java 库本身中的 Python 库(.so 版本)的引用有关。这似乎是一个构建配置错误(按照说明确实会产生它)。

我能够通过在不支持其中的 Python 库的情况下重新构建 Java 版本来消除双定义错误,在 cmake 步骤中使用以下内容(其他所有内容都相同):

cmake -D BUILD_SHARED_LIBS=OFF -D BUILD_NEW_PYTHON_SUPPORT=NO ..

新生成的 Java 库和 .jar 与以前一样工作,但没有错误消息。

(请注意,我不能保证这不会导致其他问题,特别是如果您想做某种混合语言编程,但它确实会生成对 Java 和 Eclipse 有用的库。您始终可以构建多个版本的 OpenCV,同样,有些支持 Python,有些不支持,如果您在某些时候切换语言,请使用您喜欢的任何一种。)

帽子提示: http ://answers.opencv.org/question/16015/mac-opencv-246-java-exception/

于 2013-09-17T19:22:07.420 回答