- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的情况几乎和这个问题一样:Trying to make java application (Executable Jar) that uses OpenCV portable. Getting unsatisfied link error .这个问题以及与这个问题相关联的问题帮助我了解更多。但我仍然需要帮助解决我的问题。我的问题实际上分为两个相互关联的问题:
如何确定我的应用程序实际需要的 opencv 库文件(只是为了抓取视频)
在我的开发计算机上有许多目录显然包含与 opencv2.4.2 相同的 dll 文件集合(据我所知只需要 dll 文件):
我了解 x86 和 x64 的划分,但是 mingw/vc9/vc10 呢?
如何将它们组织到我的可移植构建中?
当我从我的项目创建可运行的 jar 时,我有一个不错的选项“将所需的库复制到生成的 JAR 旁边的子文件夹中”。该文件夹通常具有“_myApp__lib”形式的名称。假设我也将所需的 dll 文件放入该子文件夹。如何让我的可运行 jar 看到它们?我可以在没有-Djava.library.path 的情况下这样做吗?是否可以将dll文件放到单独的jar中?
最佳答案
与问题的第 1 部分相关:
据我所知,mingw、vc9 和 vc10 是用于创建相应构建的不同 c++ 编译器,但我仍然不知道知道如果我使用 mingw 或 vc9 会发生什么变化。我只是选择了 vc10,因为它更加熟悉和新鲜。此处的任何解释将不胜感激。
但是这些文件并不是所有需要的文件!有 opencv/build/common/tbb 文件夹,您可以在其中找到 ia32(x86 版本,据我所知)和 intel64(x64 版本为好)文件夹又被编译器子文件夹划分。所以我又选择了vc10。
一些 dll 文件,例如用于对象检测的文件,显然在我的项目中不需要,但我决定将它们全部保留。毕竟他们只需要 42Mb 而不是大约 2.5Gb 的整个解压的 openvc 库。
现在关于问题的第 2 部分
正如许多问题答案中所建议的(参见 Trying to make java application (Executable Jar) that uses OpenCV portable. Getting unsatisfied link error 和 adding openCV to java buildpath in eclipse 以及相关问题),您可以设置 path windows 环境变量或使用 java 命令行 -Djava.library。 path 开关以帮助您的应用程序找到那些 dll 文件或将它们放置到 path windows 环境变量中的文件夹之一。您甚至可以将整个库放在 C: 驱动器的根目录下。
但是有更好的决定!您可以在应用程序运行时使用此技巧随时更改 Java 系统属性 java.library.path:
public static void setLibPath(String path){
System.setProperty( "java.library.path", path );
Field fieldSysPath;
try {
fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
一个想法来自这个page你可能会发现类似的技巧 here .
使用此代码片段,您可以将所有 dll 放置到您应用的可运行 jar 文件夹的 your_opencv_subfolder 子文件夹中,然后执行如下操作
setLibPath(System.getProperty("user.dir")+"\\your_opencv_subfolder")
在使用任何 opencv 库之前。
关于java - 如何仅将实际需要的 OpenCV 库文件放置到我的应用程序文件夹中以制作可移植的 Java 应用程序(可执行 Jar)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191968/
语句 1: [2,4,6,7,8].each do |i| (i % 2 == 0) || (puts "Not even" && break) puts i end 声明 2: [2
我有一张正在显示的卡片,上面有一些信息。我想将其包装在SingleChildScrollView中,因为我还有更多项目要添加到卡中,但是当我这样做时,屏幕只是空白吗?我曾尝试将其作为根(脚手架主体)放
我有一个带有窗体的 View ,该窗体显示ViewModel中ObservableCollection中对象的数据。 ObservableCollection使我可以浏览数据。 ObservableC
如何将时间戳附加文件名放在HDFS中? hadoop fs -put topic_2018-12-15%2016:31:15.csv /user/file_structure/ 最佳答案 您只是在运行
我正在寻求一些帮助,以找出为什么以下叠加函数的运行时间会随着每次连续运行而增加。 据我所知,如果缓冲区中的文本保持不变,则运行时间应该是相同的——即,仅向左/向右移动光标应该不会增加运行时间(但它确实
我有一个事件指示器,它显示在中间。如何将其放置在 View 的左上角? var activityIndicator = UIActivityIndicatorView() func show() {
首先,我想提前感谢所有回答这个问题的人。非常感谢您的帮助。这是我第一次在这里发帖,所以如果我发帖不礼貌,请原谅我。 我的问题是关于方法原型(prototype)的: void copySubtree(
我正在开发一个应该是通用的应用程序,一个适用于 iPad 和 iPhone 的应用程序。我想让他们的界面尽可能相似。在 iPhone 应用程序中,我使用的是选项卡栏 Controller ,其中一个选
我目前正在使用 JS 开发 REST API,但遇到以下问题:该代码有效,但如果我尝试删除、放置或修补不存在的条目,它不会返回错误,但会打印成功消息。这是为什么?获取路由完美运行。 app.route
.a{ width:500px; height:500px; background:yellow; border: 3px dashed black; }
首先,请引用下图: 这基本上是我对布局的想法。 我想要的是: 内容 div 成为“主要焦点”,例如当浏览器 调整大小,它应该留在中间; 当浏览器被调整大小时,我希望这两个图像基本上 位于内容 div
我的应用程序需要使用内存映射并发访问数据文件。我的目标是使其在共享内存系统中可扩展。研究了内存映射文件库实现的源码,想不通: 在多个线程中从 MappedByteBuffer 中读取是否合法? get
我有一个 JDesktopPane 并希望以网格样式显示 JInternalFrames 而无需覆盖框架。框架的尺寸会有所不同,因此应动态分配它们的位置。我可以存储最后放置的框架的坐标,但可以移动、最
根据https://isocpp.org/wiki/faq/dtors#placement-new传递给placement-new的地址必须正确对齐。但它给出的例子似乎与此相矛盾。 char memo
我最近一直在查看 Illumos 源代码,发现了一些奇怪的东西。 在他们的源代码中,函数类型是这样写的: static int outdec64(unsigned char *out, unsigne
您好,我目前正在尝试在我的一张图片旁边放置一个图例,但我在放置时遇到了问题。 我想将图例放在图像的左侧或右侧。这是我当前的代码: .my-legend .legend-title { text-a
根据文档, print 之间的唯一区别和 say 似乎是后者添加了 "\n"(并使用 .gist 进行字符串化)。然而, perl6 -e 'print "del\b\b"' 打印“d”,有效地应用转
所以我试图将我的图像标志放在背景上,但我的背景突然被裁剪,出现了一半的黑屏。如图: 我的 main.dart 代码: import 'package:flutter/material.dart'; i
我正在使用 Azure DevOps 构建 python 轮。我想让它尽可能通用,以便团队中的每个人都可以使用相同的管道来构建自己的 python 轮并将它们部署在一些 databricks 工作区中
在构建标准(非 WordPress)网页时,我通常会在正文末尾之前加载所有 javascript 文件,然后包含页面特定 js 代码的部分。 WorPress 建议使用 wp_enqueue_scri
我是一名优秀的程序员,十分优秀!