我目前正在尝试开发将使用OpenCV库的Java应用程序。我试图使用testNg框架测试我的openCV配置,如下所示:
@Test
public void openCVTest(){
System.out.println("OpenCV configuration simple test:");
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat m = Mat.eye(3,3, CvType.CV_8UC1);
System.out.println("OpenCV matrix = " + m.dump());
}
然而,这产生了一个错误:
java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library.path
我找到了多个答案(即使在stackoverflow上),他们都建议使用我尝试的一些解决方案进行错误配置。最后我尝试运行相同的代码,但这次在应用程序中这样:
public class App {
public static void main( String[] args ){
System.out.println("OpenCV configuration simple test:");
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat m = Mat.eye(3,3, CvType.CV_8UC1);
System.out.println("OpenCV matrix = " + m.dump());
}
}
它的工作方式与之相符。所以我的问题是,为什么这不适用于测试框架?也许某种程度上我还必须配置openCV库进行测试?
答案 0 :(得分:1)
最后,我在我的测试中使用绝对路径解决了这个问题:
@BeforeClass
public void setUp(){
System.loadLibrary("lib/x64/opencv_java300");
}
@Test
public void openCVTest(){
System.out.println("OpenCV configuration simple test:");
Mat m = Mat.eye(3,3, CvType.CV_8UC1);
System.out.println("OpenCV matrix = " + m.dump());
}
在我的应用程序中,我正常加载它:
public class App {
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main( String[] args ){
System.out.println("OpenCV configuration simple test:");
Mat m = Mat.eye(3,3, CvType.CV_8UC1);
System.out.println("OpenCV matrix = " + m.dump());
}
}