2017-07-03 121 views
2

我正在使用opencv 3.2.0,并试图让脸部识别启动并运行。opencv 3.2.0 java人脸识别Ubuntu

我遇到了org.opencv.face.Face中的Face类为空的问题。这是所有包含在文件中:

// 
// This file is auto-generated. Please don't modify it! 
// 
package org.opencv.face; 
public class Face { 
} 

从我读我需要的Java“添加到面的contrib模块的CMakeLists.txt,以便将其添加到最终的罐子如

ocv_define_module(face opencv_core opencv_imgproc opencv_objdetect WRAP python java) 

为了告诉编译器包括了contrib模块,我必须

-D 
OPENCV_EXTRA_MODULES_PATH=$YOUR_OPENCV_CONTRIB_PATH/opencv_contrib- 
3.2.0/modules 

添加到CMake的命令,后来做到最好的,一般我的命令如下

1: cmake 
2: make -j5 

编译和构建时,我得到没有错误,我得到我的jar, 我没有问题的人脸检测等等。 问题是Face类是空的,我无法创建FaceRecognizer。 我是这个指南这里 https://github.com/andreaiacono/OpenCVDemo以下 - 为2017年6月1日 和在org.opencv.demo.core.RecognizerFactory类,他使用

return Face.createFisherFaceRecognizer(); 

它,因为它似乎我不能使用。

我试图搜索3.2.0库是否有不同的方法来创建识别器,但谷歌并不是非常有帮助,因为对于任何与java opencv相关的问题只有少数答案。

什么可能导致Face类为空和/或是否有任何其他方式来创建识别器的情况下,3.2.0确实工作不同?

谢谢你的时间

回答

0

我已经找到了答案,以我刚才的问题,我张贴有目共睹的,我希望我能帮助其他一些迷失的灵魂像我一样。

我已经测试版本3.1.0,它会出现面类是不是空。证明3.2.0中的人脸检测可能无法正确实施(截至撰写时)。

我面临的问题与正确编译由于一些图书馆的使用:

/usr/include/c++/6.1.1/cstdlib:75:25: fatal error: stdlib.h: No such file or directory 
#include_next <stdlib.h> 

的回答,我发现这个问题是在https://github.com/opencv/opencv/issues/6517#issuecomment-219219767

即发现包括这CMake的:

cmake -DENABLE_PRECOMPILED_HEADERS=OFF 

这使我能够正确地编译所有东西,并且设法让我的脸部识别代码正常运行:)

祝大家好运