问题标签 [javacpp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - OpenCV:minMaxLoc 没有给出最小值/最大值
我正在尝试使用javacpp-presets遵循有关图像模板匹配的 OpenCV 教程。我想扔掉分数太低但似乎没有返回的比赛,并且.minMaxLoc
minVal
maxVal
例外是:
我究竟做错了什么?我怎样才能得到分数?我必须手动检查内容Mat
吗?
java - gradle.properies 中的 Gradle 系统属性没有被使用吗?(javacpp,智能)
根据 JavaCPP 文档,如果我们设置系统属性:javacpp.platform=linux-x86_64
它不应该下载其他平台:
这是来自javacpp:
...这会下载所有平台的二进制文件,但要仅获取一个平台的二进制文件,我们可以将 javacpp.platform 系统属性(通过 -D 命令行选项)设置为 android-arm、linux-x86_64、macosx-x86_64 , windows-x86_64 等
在Gradle中设置系统属性的方法:
使用 -D 命令行选项,您可以将系统属性传递给运行 Gradle 的 JVM。gradle 命令的 -D 选项与 java 命令的 -D 选项作用相同。
您还可以在 gradle.properties 文件中使用前缀 systemProp 设置系统属性。
但是它会下载所有平台。我尝试了不同的方法来设置该属性,没有任何区别:
在 gradle.properties 中:
或在 build.gradle 中:(在依赖项下)
在 build.gradle 我有:
它应该如何工作?
java - java.lang.OutOfMemoryError:物理内存使用率太高:physicalBytes (1100M) > maxPhysicalBytes (1024M)
当我使用 FFmpegFrameRecorder 录制视频时,它显示了这个错误
. 谁能帮我解决这个物理内存问题?
android - 在 Android 中使用 OpenCV 进行人脸识别
我正在尝试在android中使用opencv开发面部识别我已经成功地将opencv与JavaCv和Javacpp集成我从sdcard训练数据图像然后用相同的图像识别但每次都获得'0'的信心虽然我改变了我的数据,但仍然它即使使用相似的图像,也显示出“0”的信心。
java - JavaCPP - 如何实际生成 C++ JNI 包装器?
我正在尝试使用 JavaCPP 为某些 C++ 库创建 java 绑定。过程有2个方面
- 需要构建一个 linux 共享库 (.so),其中包含本机入口点 (JNIEXPORT)。碰巧我的库只是标题,所以我只是将包含传递给 JavaCPP
- 需要使用使用“native”关键字的方法生成 java 类,其签名对应于本地端的签名
Java“属性”文件(描述如何构建 .so 以及如何生成 Java 文件的部分)如下所示:
问题是,我无法终生生成 C++ 绑定。我知道是因为 .so 不包含入口点,所以用 .so 来查看它nm -D X.so
。如果我指定一个“目标”属性,Java 类就会被输出,这看起来不错,但没有.so
. 如果我省略target
属性,则 .so 已成功构建,但它没有 bindings。我还看到它没有得到它们,通过将 -nodelete 传递给它,java -jar javacpp.jar
因此它保留了生成的 cpp 文件 - 它们只有内部编组代码,而不是我的东西(一类)。
JavaCPP 文档是一场噩梦,步骤如此纠缠,我无法解决。也欢迎对替代库提出建议。谢谢。
buffer - 如何使用 LLVM javacpp 清除输出缓冲区?如何使用 LLVM javacpp 执行 fflush?
我正在使用这个 javacpp 用 Java 中的 LLVM 构建编译器。我能够为输入和输出生成代码。
输入:首先我有一个 LLVMValueRef,它是一个符号,比如说将接收输入的目标变量。然后我有一个 LLVMValueRef,它是 scanf 函数。我设置参数并构建函数调用然后传递。它工作得很好。
输出:同样,我可以打印出我想要的任何字符串。我有 printt,我可以使用 LLVMGetNamedFunction 获得它,然后我构建函数调用,传递构成要打印的字符串的所有参数。
我的问题:
如果我在 scanf 之前有 printf,则 scanf 总是排在第一位。我认为它与缓冲区有关,类似于这个问题: C/C++ printf() before scanf() issue
所以我尝试在构建每个 printf 调用后对其进行刷新。像这样:
我的意图是调用 fflush(null)。
但是,我收到此错误:
LLVM 错误:试图执行未知的外部函数:fflush
所以,我可以访问 printf 和 scanf,但我不能使用 fflush
我怎样才能使用 FFLUSH?还有其他方法可以清除此缓冲区吗?我该怎么做才能让 printf 和 scanf 以正确的顺序发生?感谢你的帮助。
llvm - 无效的 shufflevector 操作数!LLVM JavaCPP
我正在尝试使用 LLVMBuildShuffleVector 函数,它要求:
我有这两个 LLVMValueRef:
我用它们创建了掩码,它也是一个 LLVMValueRef,其中 maskElemArray 是一个包含掩码元素的数组:
现在我必须调用 LLVMBuildShuffleVector:
问题是我收到此错误:
这是什么原因?我错过了什么?任何提示如何解决它?感谢你的帮助!
java - 简单、高性能、易于维护的 java 和现代 C++ 之间的互操作性方式
我正在寻找从 java 调用现代 C++ 11/14 代码的最佳方法(从 C++ 回调到 java)。在 java 和 C++ 11/14 之间获得互操作性的最佳/最简单/最快的性能方式是什么?我已经用 python 和 C++ 编程了一段时间,并且开始依赖pybind11。我正在寻找类似于(或优于)pybind11 for java 的东西。
我知道 jni 和 jna。但是 jni 太低级、乏味且容易出错。根据这篇博文, “JNA 比 JNI 慢得多”。那篇博客文章使用了bridj,但在撰写这篇文章后的三年里,bridj 似乎已经从“一个相对年轻的项目”变成了从那时起只有两次提交的项目。
我也知道 swig,但至少对于 python,我更喜欢 pybind11 提供的直接包装,而不是 swig 的包装器生成器方法。我遇到过jni.hpp和javacpp。jni.hpp 看起来最像 pybind11,但它看起来不成熟,在 java 社区中没有广泛使用。javacpp 是最接近于 python/c++ 的 pybind11 的 java/c++ 吗?
我很感激任何指导。
(对于那些将这个问题作为 7 岁以上问题的副本结束的人来说,如何从 Java 调用 C++?,我的问题是询问当前使用最新 C++ 语言改进支持 java/c++ 互操作性的最佳库自 2011 年以来已发生。请重新开放。)
java - 使用 LLVM 运行 javacpp 预设时出现 UnsatisfiedLinkError
我正在尝试将 javacpp-presets 用于 LLVM,但似乎存在链接时间问题:每当我尝试运行我的程序时,都会出现错误
以下是我的代码