2017-07-03 128 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 

這使我能夠正確地編譯所有東西,並且設法讓我的臉部識別代碼正常運行:)

祝大家好運