2016-08-18 7 views
0

Dlib을 사용하여 얼굴 랜드 마크를 감지 할 때 shape_predictor을 사용하는 데 문제가 있습니다.Boost.Python.ArgumentError Dlib를 사용하여 랜드 마크를 감지하는 중

I 컴파일 dlib 및 these issuethis one,하지만 여전히 같은 오류 필요에 따라 검증 부스트 LIB 경로 :

Traceback (most recent call last): 
    File "face_landmark_detection.py", line 66, in <module> 
    predictor = dlib.shape_predictor(predictor_path) 
Boost.Python.ArgumentError: Python argument types in 
    shape_predictor.__init__(shape_predictor, str) 
did not match C++ signature: 
    __init__(boost::python::api::object, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) 
    __init__(_object*) 

어떤 아이디어?

답변

0

제가 생각할 수있는 것은 predictor_path를 std :: string으로 변환 할 수 없다는 것입니다. 유니 코드가 될 수 있습니까? 파이썬 3을 사용하고 있습니까? *?

+0

나는 파이썬 2.7과 아나콘다를 사용했다. OpenCV 3 –

+0

predictor_path를 유니 코드 형식의 하드 코드 된 문자열로 바꿨지 만 여전히 동일한 문제가 발생했습니다. –

+0

내 제안 조금 반대 : 명시 적으로 ASCII 문자열로 변환 해보십시오. 이 제안은 boost.python이 유니 코드 문자열 (상자 밖의)을 지원하지 않으며 경로가 유니 코드로되어있을 수 있으므로 인수의 변환이 실패 할 수 있다는 가정을 기반으로합니다. –

1

두 개의 똑같은 우분투 16 버전을 가지고 동일한 문제가있었습니다. 트릭이 g ++ - 4.9 대신 g ++ - 5.4로 컴파일되었습니다.

sudo apt-get install g++-5 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 60 

내가 생각한 CMake-Flags도 변경 될 수 있습니다.

+0

나를 위해 일했습니다. –