chenshijun
2019-04-22 291dbcd9331cd0df41addef74defa4654ee034fb
QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.cpp
@@ -7,8 +7,8 @@
#include <THFaceProperty_i.h>
FaceDetectServerI::FaceDetectServerI() {
    long threadMax = appPref.getLongData("thread.max");
    long gpuIndex = appPref.getLongData("gpu.index");
    long threadMax = appPref.getIntData("thread.max");
    long gpuIndex = appPref.getIntData("gpu.index");
    for (int i = 0; i < threadMax; i++) {
        detectResourcesManager.pushResource(i);
    }
@@ -32,6 +32,8 @@
        delete[] param;
    }
    THFP_Create(threadMax);
    m_ampleSize =
        appPref.getIntData("FaceDetectionSampleSize") > 0 ? appPref.getIntData("FaceDetectionSampleSize") : 640;
}
FaceDetectServerI::~FaceDetectServerI() {
@@ -41,15 +43,17 @@
FaceDetect::Faces FaceDetectServerI::faceDetect(Ice::Int width, Ice::Int height, const std::string &shareMemoryName,
                                                const Ice::Current &) {
    ClockTimer ct("FaceDetectServerI::faceDetect");
//    ClockTimer ct("FaceDetectServerI::faceDetect");
//    INFO("Face Detect");
    FaceDetect::Faces faces;
    QSharedMemory shareMemory(QString(shareMemoryName.c_str()));
    if (shareMemory.attach()) {
        auto data = shareMemory.constData();
        THFI_FacePos facesPos[30];
        int channel = detectResourcesManager.getAvilableChannel(shareMemoryName);
        int faceNum = THFI_DetectFace(channel, (BYTE *) data, 24, width, height, facesPos, 30);
        int faceNum = THFI_DetectFace(channel, (BYTE *) data, 24, width, height, facesPos, 30, m_ampleSize);
        if (faceNum > 0) {
            DBG("Face num is :" << faceNum);
            for (int i = 0; i < faceNum; i++) {
                FaceDetect::FacePos face;
                auto &pos = facesPos[i];
@@ -60,7 +64,7 @@
                faces.push_back(face);
            }
        } else {
            DBG("Face num is 0");
//            DBG("Face num is 0");
        }
    } else {
        ERR("shareMemory error  " << shareMemoryName);
@@ -70,6 +74,7 @@
FaceDetect::ThftResult FaceDetectServerI::faceProperty(Ice::Int width, Ice::Int height, const FaceDetect::FacePos &pos,
                                                       const std::string &shareMemoryName, const Ice::Current &) {
    INFO("faceProperty");
    QSharedMemory shareMemory(QString(shareMemoryName.c_str()));
    if (shareMemory.attach()) {
        FaceDetect::ThftResult thftResult;
@@ -86,6 +91,7 @@
        }
        return thftResult;
    } else {
        throw std::runtime_error("shareMemory attach faild");
        ERR("shareMemory error  " << shareMemoryName);
//        throw std::runtime_error("shareMemory attach faild");
    }
}