构建带有contrib模块和Java包装器的OpenCV

6

我正在尝试在我的Windows 7机器上构建OpenCV。为了包含contrib模块,我已经在CMake-gui中添加了OPENCV_EXTRA_MODULES_PATH。已经创建了opencv-300.jar和opencv-300.dll,但是我找不到用于使用额外模块的Java类。我是否错过了制作配置中的选项?是否可以从Java中使用这些额外模块?


你好!我成功地构建了带有额外模块的OpenCV,并创建了Java的Jar文件,我测试了它的工作情况良好,但是在这个Jar文件中我没有看到任何新东西,我的意思是说,Java的contrib代码在哪里?这个Jar文件几乎和OpenCV下载文件中的Jar文件一样。如果你理解我的问题,请告诉我我在构建Jar文件时做错了什么,或者它就是这样的?非常感谢。注意:我在构建Jar文件时已经包含了所有内容。 - Bahramdun Adil
1个回答

5

我有同样的问题,我是这样解决的。我想你从contrib repo下载了与要构建的opencv版本相匹配的特定版本。所以进入目录并进入face模块目录;在这个目录中有一个名为CMakeLists.txt的文件,你需要编辑它。这个文件应该像这样:

set(the_description "Face recognition etc")
ocv_define_module(face opencv_core opencv_imgproc opencv_objdetect WRAP python)
# NOTE: objdetect module is needed for one of the samples

如果你想在opencv-3xx.jar库中使用org.opencv.face包,你需要按照以下方式修改文件的第二行:
ocv_define_module(face opencv_core opencv_imgproc opencv_objdetect WRAP python java)

接下来,您需要根据贡献存储库的Readme.md编译opencv. https://github.com/itseez/opencv_contrib

显然,如果您想要将所有贡献模块添加到您的opencv-3xx.jar库中,则同样适用。

希望这个解决方案对您有用,再见!


哇!谢谢你的回答。你真的节省了我很多时间!如果你想要自动化一些东西,你可以用 cd opencv_contrib/modules 命令切换到 opencv_contrib/modules 目录然后运行 grep -iR "WRAP python" 查找所有需要替换成 WRAP python javaWRAP python。如果打印出来的结果都是你想要替换的,那么你就可以运行 find . -name CMakeLists.txt -type f -print0 | xargs -0 sed -i 's/WRAP python/WRAP python java/g' 命令进行替换了。 - patryk.beza
我想在xfeatures2d模块中使用surf。我尝试了你的解决方案,但制作时出现错误:opencv/build/src/org/opencv/xfeatures2d/DAISY.java:48: 错误:找不到符号。问题是什么? - sify
嗨,我遇到了一个问题,指向某些内部对象的指针不受支持。返回类型“Ptr_Dictionary”不受支持,跳过该函数。你有什么想法可以在模块端进行哪些更改来添加对Java包装器的支持吗? - Marek Smigielski
@sify 尝试在所有的xfeaures2d文件中导入org.opencv.features2d.*,这解决了我的错误。 - klanm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接