首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Opencv Java异常

Opencv Java异常
EN

Stack Overflow用户
提问于 2012-10-11 13:33:00
回答 6查看 27.1K关注 0票数 10

当我试图运行一个使用opencv库的Java项目时,我正在使用Windows 7并获得此异常:

代码语言:javascript
运行
复制
Exception in thread "main" 
java.lang.UnsatisfiedLinkError: no opencv_java in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.opencv.highgui.Highgui.<clinit>(Highgui.java:416)
at teste.main(teste.java:21)

我做错什么了?缺少进口了吗?

我想在Eclipse (而不是Android)中创建一个使用openCV的简单Java项目。

  • 所以我已经从OpenCV-2.4.2.exe文件中提取了javacv到C:\
  • 然后执行"cmake -G "MinGW Makefiles“-DBUILD_opencv_java=ON C:\opencv”命令,然后执行"mingw32-make“。所有的构建都没有错误或警告。
  • 在我将opencv添加到我的环境变量之后
EN

回答 6

Stack Overflow用户

发布于 2014-08-04 12:52:32

引发此异常是因为系统试图查找OpenCV在此特定平台上需要的本地库,而没有找到它们。

代码语言:javascript
运行
复制
Exception in thread "main" 
java.lang.UnsatisfiedLinkError: no opencv_java in java.

来解决这个错误,

  1. 如果您使用的是opencv版本< opencv 2.4.6,那么@ answer 3033420给出的答案就是解决方案。
  2. 如果您使用的是>= opencv 2.4.6,那么jar在核心类中有一个名为的常量变量,您将这个变量赋予FaceDetector类中的loadLibrary()函数,以便在项目中包含opencv的特性,您可能已经有了以下内容: System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

使用上述命名常量,不需要记住strang文件的名称。

opencv 2.4.9.jar添加到项目首选项中的构建路径,如下所示:

代码语言:javascript
运行
复制
Window -> Preferences -> Java Build Path –> Add Library -> User Libraries -> 
User Library -> & click New

您将看到如下所示的对话框。添加opencv-2.4.9作为库名&单击Ok。

然后Add External Jar &找到您的opencv并单击ok。然后展开opencv-2.4.9.jar &单击本机库位置(无),如下所示:

必需步骤:输入包含"opencv-2.4.9“使用的本机库的文件夹的位置,然后单击OK,如下所示:

所以现在jar拥有了它所需的所有本机库。重新构建java程序,一切都应该按照设计来编译和运行。

票数 6
EN

Stack Overflow用户

发布于 2015-03-17 00:57:50

如果您收到此错误:

代码语言:javascript
运行
复制
Exception in thread "main" 
java.lang.UnsatisfiedLinkError: no opencv_java in java.library.path

这可能意味着你正在从臀部拍摄,用布朗运动编程,试图让openCV工作。就像拼命按下所有的按钮,试图弄清楚飞机在飞行中是如何工作的。你会过得很糟糕的。

错误意味着什么:

Eclipse告诉您,jar文件找不到它完成工作所需的库。所以很自然,除非你让它们可用,否则它是不会起作用的。您必须在您的特定平台上找到关于“如何从源代码中构建openCV”的教程:(windows、mac、linux等)、(32位、64位等等)。

基本上,您忽略了“本机库位置”设置,或者没有正确设置它们,因此jar找不到用C编写的支持库。

如何修复它,千英尺视图:

  1. 下载操作系统的openCV源代码。
  2. 按照说明从源构建openCV。
  3. 将jar复制到Java项目中的lib目录中。
  4. 通过将“本机库位置”设置为从源构建build/lib的路径下的openCV目录,配置jar以查找其本机库。
  5. 清理构建java项目,UnsatisfiedLinkError就会消失。

这个博客一步一步地详细介绍了上述步骤:https://udallascs.wordpress.com/2014/03/30/adding-opencv-and-configuring-to-work-with-eclipse-and-java/

,为什么这不能只是一个简单的罐子呢?

因为大多数openCV都是用C编程语言编写的。您使用的jar文件只是一个了解C世界的窗口。所以这是一台红宝石金伯格机器。在真正的工作世界里,你会看到各种各样的事情,所以请注意,你在这里接受教育。

票数 5
EN

Stack Overflow用户

发布于 2015-05-04 15:12:09

试图通过这样做来加载库:

代码语言:javascript
运行
复制
 System.loadLibrary("opencv_java244")

或者这样做:

代码语言:javascript
运行
复制
 System.loadLibrary("opencv_java244")

不起作用了-还是犯了同样的错误。

最后,有效的是提供到dylib文件的完整路径,并使用:

代码语言:javascript
运行
复制
System.load(new File("/usr/local/Cellar/opencv/2.4.10.1/share/OpenCV/java/libopencv_java2410.dylib").getAbsolutePath());'

我使用的是HomeBrew,但是无论您如何安装它,只需找到文件并对路径进行修改。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12840758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档