| | |
| | | #include <sys/time.h> |
| | | #include <time.h> |
| | | #include <list> |
| | | #include <basic/debug/Debug.h> |
| | | |
| | | #include <opencv2/opencv.hpp> |
| | | #include <FiStdDefEx.h> |
| | | |
| | | #include <THFaceTracking_i.h> |
| | | #include <FaceDetectServer/rpc/FaceServer.h> |
| | | |
| | | #include "FaceDefine.h" |
| | | |
| | |
| | | // std::map<int, ObjectList> m_objListCache; |
| | | }; |
| | | |
| | | static FaceTrackingWrapper g_faceTrackingWrapper; |
| | | static std::map<std::string, int> g_channelCache; |
| | | |
| | | static ::FaceDetect::Faces faceTrackingFunc(int channel, cv::Mat &image) { |
| | | FaceDetect::Faces faces; |
| | | BasicFace::FaceImage faceImage{image.cols, image.rows, image.step, image.data}; |
| | | |
| | | THFT_FaceInfo facePos[MAX_DETECT_FACE]; |
| | | int faceNum = THFT_FaceTracking(channel, image.data, facePos); |
| | | |
| | | if (faceNum > 0) { |
| | | for (int i = 0; i < faceNum; i++) { |
| | | FaceDetect::FacePos face; |
| | | auto &pos = facePos[i]; |
| | | memcpy(&face, &pos, sizeof(pos) - sizeof(pos.pFacialData) - sizeof(pos.nFaceID)); |
| | | face.pFacialData.resize(sizeof(pos.pFacialData)); |
| | | memcpy(face.pFacialData.data(), pos.pFacialData, sizeof(pos.pFacialData)); |
| | | face.pfaceId = pos.nFaceID; |
| | | // DBG(face.fAngle.confidence); |
| | | faces.push_back(face); |
| | | } |
| | | } else { |
| | | DBG("Face num is 0"); |
| | | } |
| | | } |
| | | |
| | | #endif //TESTCODE_FACETRACKINGWRAPPER_H |