问题标签 [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.

0 投票
1 回答
949 浏览

java - OpenCV:minMaxLoc 没有给出最小值/最大值

我正在尝试使用javacpp-presets遵循有关图像模板匹配的 OpenCV 教程。我想扔掉分数太低但似乎没有返回的比赛,并且.minMaxLocminValmaxVal

例外是:

我究竟做错了什么?我怎样才能得到分数?我必须手动检查内容Mat吗?

0 投票
1 回答
436 浏览

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 我有:

它应该如何工作?

0 投票
2 回答
1215 浏览

java - java.lang.OutOfMemoryError:物理内存使用率太高:physicalBytes (1100M) > maxPhysicalBytes (1024M)

当我使用 FFmpegFrameRecorder 录制视频时,它显示了这个错误

. 谁能帮我解决这个物理内存问题?

0 投票
0 回答
192 浏览

android - 在 Android 中使用 OpenCV 进行人脸识别

我正在尝试在android中使用opencv开发面部识别我已经成功地将opencv与JavaCv和Javacpp集成我从sdcard训练数据图像然后用相同的图像识别但每次都获得'0'的信心虽然我改变了我的数据,但仍然它即使使用相似的图像,也显示出“0”的信心。

0 投票
1 回答
2411 浏览

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 文档是一场噩梦,步骤如此纠缠,我无法解决。也欢迎对替代库提出建议。谢谢。

0 投票
0 回答
117 浏览

buffer - 如何使用 LLVM javacpp 清除输出缓冲区?如何使用 LLVM javacpp 执行 fflush?

我正在使用这个 javacpp 用 Ja​​va 中的 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 以正确的顺序发生?感谢你的帮助。

0 投票
1 回答
77 浏览

llvm - 无效的 shufflevector 操作数!LLVM JavaCPP

我正在尝试使用 LLVMBuildShuffleVector 函数,它要求:

我有这两个 LLVMValueRef:

我用它们创建了掩码,它也是一个 LLVMValueRef,其中 maskElemArray 是一个包含掩码元素的数组:

现在我必须调用 LLVMBuildShuffleVector:

问题是我收到此错误:

这是什么原因?我错过了什么?任何提示如何解决它?感谢你的帮助!

0 投票
2 回答
212 浏览

opencv - javacpp-opencv drawContours 产生与 python 不同的结果?

javacpp-opencv drawContours 产生的结果比在 python 中错误。

这是java中使用drawContours函数的代码:

结果 在此处输入图像描述

这是相同的python代码:

结果在此处输入图像描述

maven pom

原图在此处输入图像描述

0 投票
0 回答
159 浏览

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.hppjavacpp。jni.hpp 看起来最像 pybind11,但它看起来不成熟,在 java 社区中没有广泛使用。javacpp 是最接近于 python/c++ 的 pybind11 的 java/c++ 吗?

我很感激任何指导。

(对于那些将这个问题作为 7 岁以上问题的副本结束的人来说,如何从 Java 调用 C++?,我的问题是询问当前使用最新 C++ 语言改进支持 java/c++ 互操作性的最佳库自 2011 年以来已发生。请重新开放。)

0 投票
1 回答
141 浏览

java - 使用 LLVM 运行 javacpp 预设时出现 UnsatisfiedLinkError

我正在尝试将 javacpp-presets 用于 LLVM,但似乎存在链接时间问题:每当我尝试运行我的程序时,都会出现错误

以下是我的代码