尝试构建stasm minimal时出错

时间:2015-08-30 23:44:48

标签: c++ image-processing compiler-errors g++ stasm

我没有C ++经验。我必须使用stasm进行面部检测。我正在建立最小的例子。在page 4 of this tutorial上可以知道使其工作的必要条件。但我是这两个错误:

g++ -Wno-deprecated -o teste minimal.cpp `pkg-config opencv --cflags --libs` -I/home/caaarlos/workspace/StasmDesbravando/stasm 

In file included from minimal.cpp:46:0:
/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/pinstart.cpp: In function ‘void stasm::CopyPoint(stasm::Shape&, const Shape&, int, int)’:
/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/pinstart.cpp:138:13: error: redefinition of ‘void stasm::CopyPoint(stasm::Shape&, const Shape&, int, int)’
static void CopyPoint(     // copy a point from oldshape to shape
         ^
In file included from minimal.cpp:37:0:
/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/convshape.cpp:9:13: error: ‘void stasm::CopyPoint(stasm::Shape&, const Shape&, int, int)’ previously defined here
static void CopyPoint(     // copy a point from oldshape to shape

这是我的代码:

// minimal.cpp: Display the landmarks of a face in an image.
//              This demonstrates stasm_search_single.

   #include <stdio.h>
   #include <stdlib.h>
   #include "opencv/highgui.h"
   #include <opencv/cv.h>

   //#include          "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm_lib.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/asm.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/atface.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/basedesc.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/classicdesc.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/convshape.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/err.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/eyedet.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/eyedist.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/faceroi.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/hat.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/hatdesc.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/landmarks.h"
   //#include        "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/landtab_muct77.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/misc.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/pinstart.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/print.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shape17.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shapehacks.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shapemod.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/startshape.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm_landmarks.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm_lib.h"
   //#include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm_lib_ext.h"

  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/asm.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/classicdesc.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/convshape.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/err.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/eyedet.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/eyedist.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/faceroi.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/hat.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/hatdesc.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/landmarks.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/misc.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/pinstart.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/print.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shape17.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shapehacks.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/shapemod.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/startshape.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/stasm_lib.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/MOD_1/facedet.h"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/MOD_1/initasm.h"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/MOD_1/initasm.cpp"
  #include "/home/caaarlos/Documentos/TCC/stasm4.1.0/stasm/MOD_1/facedet.cpp"

  using namespace cv;
  using namespace std;

  int main()
  {
    static const char* const path = "../data/testface.jpg";

cv::Mat_<unsigned char> img(cv::imread(path, CV_LOAD_IMAGE_GRAYSCALE));

if (!img.data)
{
    printf("Cannot load %s\n", path);
    exit(1);
}


int foundface;
float landmarks[2 * stasm_NLANDMARKS]; // x,y coords (note the 2)

if (!stasm_search_single(&foundface, landmarks,
                         (const char*)img.data, img.cols, img.rows, path, "../data"))
{
    printf("Error in stasm_search_single: %s\n", stasm_lasterr());
    exit(1);
}

if (!foundface)
     printf("No face found in %s\n", path);
else
{
    // draw the landmarks on the image as white dots (image is monochrome)
    stasm_force_points_into_image(landmarks, img.cols, img.rows);
    for (int i = 0; i < stasm_NLANDMARKS; i++)
        img(cvRound(landmarks[i*2+1]), cvRound(landmarks[i*2])) = 255;
}

cv::imwrite("minimal.bmp", img);
cv::imshow("stasm minimal", img);
cv::waitKey();
return 0;
}

我正在编译我的代码:

g++ -Wno-deprecated -o teste minimal.cpp `pkg-config opencv --cflags --libs` -I/home/caaarlos/workspace/StasmDesbravando/stasm

我做错了什么?有人能帮我吗? 感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。如果某人有类似我的问题,你应该输入this site并使用CMakeList.txt和CMake来构建Stasm。如果您收到任何错误,可以尝试使用自述文件。