Commit e7ad512ab81f03e8fcc1177bfe547cdfd5d815d7

Authored by Scott Klum
1 parent d4cf88ed

added stasm4

openbr/plugins/draw.cpp
@@ -41,7 +41,7 @@ class DrawTransform : public UntrainableTransform @@ -41,7 +41,7 @@ class DrawTransform : public UntrainableTransform
41 void project(const Template &src, Template &dst) const 41 void project(const Template &src, Template &dst) const
42 { 42 {
43 const Scalar color(0,255,0); 43 const Scalar color(0,255,0);
44 - const Scalar verboseColor(255, 255, 0); 44 + const Scalar verboseColor(0, 0, 0);
45 dst = src.m().clone(); 45 dst = src.m().clone();
46 46
47 if (points) { 47 if (points) {
openbr/plugins/stasm3.cmake
1 -set(BR_WITH_STASM OFF CACHE BOOL "Build with Stasm") 1 +set(BR_WITH_STASM3 OFF CACHE BOOL "Build with Stasm")
2 2
3 -if(${BR_WITH_STASM})  
4 - find_package(Stasm REQUIRED)  
5 - set(BR_THIRDPARTY_SRC ${BR_THIRDPARTY_SRC} plugins/stasm.cpp)  
6 - set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${Stasm_LIBS}) 3 +if(${BR_WITH_STASM3})
  4 + find_package(Stasm3 REQUIRED)
  5 + set(BR_THIRDPARTY_SRC ${BR_THIRDPARTY_SRC} plugins/stasm3.cpp)
  6 + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${Stasm3_LIBS})
7 7
8 if(WIN32) 8 if(WIN32)
9 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION bin) 9 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION bin)
openbr/plugins/stasm4.cmake
1 -set(BR_WITH_STASM OFF CACHE BOOL "Build with Stasm") 1 +set(BR_WITH_STASM4 OFF CACHE BOOL "Build with Stasm")
2 2
3 -if(${BR_WITH_STASM})  
4 - find_package(Stasm REQUIRED)  
5 - set(BR_THIRDPARTY_SRC ${BR_THIRDPARTY_SRC} plugins/stasm.cpp)  
6 - set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${Stasm_LIBS}) 3 +if(${BR_WITH_STASM4})
  4 + find_package(Stasm4 REQUIRED)
  5 + set(BR_THIRDPARTY_SRC ${BR_THIRDPARTY_SRC} plugins/stasm4.cpp)
  6 + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${Stasm4_LIBS})
7 7
8 if(WIN32) 8 if(WIN32)
9 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION bin) 9 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION bin)
@@ -11,5 +11,5 @@ if(${BR_WITH_STASM}) @@ -11,5 +11,5 @@ if(${BR_WITH_STASM})
11 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION lib) 11 install(DIRECTORY ${Stasm_DIR}/build/ DESTINATION lib)
12 endif() 12 endif()
13 13
14 - install(DIRECTORY ${Stasm_DIR}/models/ DESTINATION share/openbr/models/stasm) 14 + #install(DIRECTORY ${Stasm_DIR}/models/ DESTINATION share/openbr/models/stasm)
15 endif() 15 endif()
openbr/plugins/stasm.cpp renamed to openbr/plugins/stasm4.cpp
1 -#include <stasm_dll.hpp>  
2 -#include <stasm.hpp> 1 +#include <stasm_lib.h>
3 #include <opencv2/highgui/highgui.hpp> 2 #include <opencv2/highgui/highgui.hpp>
4 #include "openbr_internal.h" 3 #include "openbr_internal.h"
5 4
@@ -22,7 +21,7 @@ class StasmInitializer : public Initializer @@ -22,7 +21,7 @@ class StasmInitializer : public Initializer
22 Globals->abbreviations.insert("RectFromStasmEyes","RectFromPoints([27, 28, 29, 30, 31, 32, 33, 34, 35, 36],0.125,6.0)+Resize(44,164)"); 21 Globals->abbreviations.insert("RectFromStasmEyes","RectFromPoints([27, 28, 29, 30, 31, 32, 33, 34, 35, 36],0.125,6.0)+Resize(44,164)");
23 Globals->abbreviations.insert("RectFromStasmJaw","RectFromPoints([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],10)"); 22 Globals->abbreviations.insert("RectFromStasmJaw","RectFromPoints([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],10)");
24 Globals->abbreviations.insert("RectFromStasmBrow","RectFromPoints([15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],0.15,6)+Resize(28,132)"); 23 Globals->abbreviations.insert("RectFromStasmBrow","RectFromPoints([15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],0.15,6)+Resize(28,132)");
25 - Globals->abbreviations.insert("RectFromStasmNose","RectFromPoints([38, 39, 40, 41, 42, 43, 44, 67],0.15,1.25)+Resize(44,44)"); 24 + Globals->abbreviations.insert("RectFromStasmNose","RectFromPoints([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58],0.15,1.25)+Resize(44,44)");
26 Globals->abbreviations.insert("RectFromStasmMouth","RectFromPoints([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],0.3,3.0)+Resize(28,68)"); 25 Globals->abbreviations.insert("RectFromStasmMouth","RectFromPoints([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],0.3,3.0)+Resize(28,68)");
27 } 26 }
28 }; 27 };
@@ -38,45 +37,26 @@ class StasmTransform : public UntrainableTransform @@ -38,45 +37,26 @@ class StasmTransform : public UntrainableTransform
38 { 37 {
39 Q_OBJECT 38 Q_OBJECT
40 39
41 - QList<ASM_MODEL> models;  
42 - //mutable QMutex mutex; 40 + //QList<ASM_MODEL> models;
  41 + mutable QMutex mutex;
43 42
44 void init() 43 void init()
45 { 44 {
46 - models = nInitAsmModels(qPrintable(Globals->sdkPath + "/share/openbr/models/stasm/mu-68-1d.conf"), qPrintable(Globals->sdkPath + "/share/openbr/models/stasm/mu-76-2d.conf")); 45 +
47 } 46 }
48 47
49 void project(const Template &src, Template &dst) const 48 void project(const Template &src, Template &dst) const
50 { 49 {
51 - //QMutexLocker locker(&mutex);  
52 -  
53 - //qDebug() << "PittPatt X: " << src.file.get<QPoint>("Affine_0").x() - src.m().cols/2 << src.file.get<QPoint>("Affine_1").x() - src.m().cols/2;  
54 - //qDebug() << "PittPatt Y: " << src.m().rows/2 - src.file.get<QPoint>("Affine_0").y() << src.m().rows/2 - src.file.get<QPoint>("Affine_1").y();  
55 -  
56 - qDebug() << src.file.fileName(); 50 + QMutexLocker locker(&mutex);
57 51
58 - int numLandmarks;  
59 - int landmarks[500]; 52 + int foundface;
  53 + float landmarks[2 * stasm_NLANDMARKS]; // x,y coords (note the 2)
  54 + stasm_search_single(&foundface, landmarks, reinterpret_cast<const char*>(src.m().data), src.m().cols, src.m().rows, NULL, "/Users/scottklum/openbr/3rdparty/stasm4.0.0/data");
60 55
61 - DET_PARAMS parameters;  
62 - parameters.lex = src.file.get<QPoint>("Affine_0").x() - src.m().cols/2;  
63 - parameters.ley = src.m().rows/2 - src.file.get<QPoint>("Affine_0").y();  
64 - parameters.rex = src.file.get<QPoint>("Affine_1").x() - src.m().cols/2;  
65 - parameters.rey = src.m().rows/2 - src.file.get<QPoint>("Affine_1").y();  
66 -  
67 - AsmSearchDll(numLandmarks, landmarks, qPrintable(src.file.name),  
68 - reinterpret_cast<char*>(src.m().data), src.m(), models,  
69 - qPrintable(Globals->sdkPath + "/share/openbr/models/stasm/"),  
70 - parameters);  
71 -  
72 - if (numLandmarks == 0) {  
73 - qWarning("Unable to detect Stasm landmarks for %s", qPrintable(src.file.fileName()));  
74 - dst.file.set("FTE", true);  
75 - dst.m() = src.m();  
76 - return;  
77 - } 56 + if (!foundface)
  57 + qDebug() << "No face found in " << qPrintable("/Users/scottklum/facesketchid/data/img/" + src.file.path() + "/" + src.file.fileName());
78 58
79 - for (int i = 0; i < numLandmarks; i++) { 59 + for (int i = 0; i < stasm_NLANDMARKS; i++) {
80 dst.file.appendPoint(QPointF(landmarks[2 * i], landmarks[2 * i + 1])); 60 dst.file.appendPoint(QPointF(landmarks[2 * i], landmarks[2 * i + 1]));
81 } 61 }
82 62
@@ -88,4 +68,4 @@ BR_REGISTER(Transform, StasmTransform) @@ -88,4 +68,4 @@ BR_REGISTER(Transform, StasmTransform)
88 68
89 } // namespace br 69 } // namespace br
90 70
91 -#include "stasm.moc" 71 +#include "stasm4.moc"
share/openbr/cmake/FindStasm3.cmake
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 # In your CMakeLists.txt, add these lines: 5 # In your CMakeLists.txt, add these lines:
6 # 6 #
7 # find_package(Stasm3 REQUIRED) 7 # find_package(Stasm3 REQUIRED)
8 -# target_link_libraries(MY_TARGET ${Stasm_LIBS}) 8 +# target_link_libraries(MY_TARGET ${Stasm4_LIBS})
9 # ================================================================ 9 # ================================================================
10 10
11 find_path(Stasm_DIR include/stasm.hpp ${CMAKE_SOURCE_DIR}/3rdparty/*) 11 find_path(Stasm_DIR include/stasm.hpp ${CMAKE_SOURCE_DIR}/3rdparty/*)
@@ -17,4 +17,4 @@ set(SRC ${SOURCE};${SRC}) @@ -17,4 +17,4 @@ set(SRC ${SOURCE};${SRC})
17 include_directories(${Stasm_DIR}/include) 17 include_directories(${Stasm_DIR}/include)
18 link_directories(${Stasm_DIR}/build) 18 link_directories(${Stasm_DIR}/build)
19 19
20 -set(Stasm_LIBS stasm) 20 +set(Stasm3_LIBS stasm)
share/openbr/cmake/FindStasm4.cmake
@@ -5,16 +5,16 @@ @@ -5,16 +5,16 @@
5 # In your CMakeLists.txt, add these lines: 5 # In your CMakeLists.txt, add these lines:
6 # 6 #
7 # find_package(Stasm4 REQUIRED) 7 # find_package(Stasm4 REQUIRED)
8 -# target_link_libraries(MY_TARGET ${Stasm_LIBS}) 8 +# target_link_libraries(MY_TARGET ${Stasm4_LIBS})
9 # ================================================================ 9 # ================================================================
10 10
11 -find_path(Stasm_DIR include/stasm.hpp ${CMAKE_SOURCE_DIR}/3rdparty/*) 11 +find_path(Stasm_DIR stasm/stasm_lib.h ${CMAKE_SOURCE_DIR}/3rdparty/*)
12 12
13 add_subdirectory(${Stasm_DIR} ${Stasm_DIR}/build) 13 add_subdirectory(${Stasm_DIR} ${Stasm_DIR}/build)
14 14
15 set(SRC ${SOURCE};${SRC}) 15 set(SRC ${SOURCE};${SRC})
16 16
17 -include_directories(${Stasm_DIR}/include) 17 +include_directories(${Stasm_DIR}/stasm)
18 link_directories(${Stasm_DIR}/build) 18 link_directories(${Stasm_DIR}/build)
19 19
20 -set(Stasm_LIBS stasm) 20 +set(Stasm4_LIBS stasm)