| | |
| | | #include <QtCore/QString> |
| | | #include <basic/timer_counter/Clocktimer.h> |
| | | #include <basic/util/opencv/CvUtil.h> |
| | | #include "FaceTrackingWrapper.h" |
| | | |
| | | #define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT); |
| | | |
| | |
| | | sharedMemory(nullptr), trackingTrigger(nullptr) { |
| | | sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); |
| | | if (!sharedMemory->create(4608 * 2592 * 4)) { |
| | | sharedMemory->attach(); |
| | | sharedMemory-> |
| | | |
| | | attach(); |
| | | DBG("size is " << sharedMemory->size()); |
| | | } |
| | | |
| | | // string t_camIdex = getProperty("dev_id"); |
| | | //#todo |
| | | //#todo |
| | | string t_camIdex; |
| | | if (shareMemoryName.find("/")) { |
| | | string_replace(shareMemoryName, "//", "/"); |
| | | string_replace(shareMemoryName, |
| | | "//", "/"); |
| | | auto dev_pos = shareMemoryName.find("/cut/") + 5; |
| | | auto ch_pos = shareMemoryName.find("/", dev_pos) + 1; |
| | | auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1); |
| | |
| | | t_score = t_score / 100; |
| | | |
| | | trackingTrigger = new TrackingTrigger(t_score); |
| | | m_trackingRet = appPref.getIntData("FaceTrackingRet"); |
| | | } |
| | | |
| | | FaceRpcElement::~FaceRpcElement() { |
| | |
| | | try { |
| | | auto server = rpcClient.getServer(); |
| | | if (!server) ERR("server is null"); |
| | | faces = server->faceDetect(image.cols, image.rows, sharedMemory->key().toStdString()); |
| | | |
| | | if (m_trackingRet) { |
| | | // #todo xxxx.detectFace |
| | | faces = faceTrackingFunc(m_channel, image); |
| | | } else { |
| | | faces = server->faceDetect(image.cols, image.rows, sharedMemory->key().toStdString()); |
| | | } |
| | | // DBG("faces.size " << faces.size()); |
| | | for (auto face: faces) { |
| | | for (auto &face: faces) { |
| | | ::FaceDetect::RECT &rect = face.rcFace; |
| | | ScoredRect scoredRect; |
| | | int x = face.rcFace.left; |
| | |
| | | scoredRect.rect = {x, y, w, h}; |
| | | scoredRect.score = (float) face.fAngle.confidence; |
| | | |
| | | if (trackingTrigger->triggerOnce(scoredRect)) { |
| | | bool newFaceRet = m_trackingRet ? trackingTrigger->triggerOnce(scoredRect, face.pfaceId) |
| | | : trackingTrigger->triggerOnce(scoredRect); |
| | | if (newFaceRet) { |
| | | auto property = server->faceProperty(image.cols, image.rows, face, sharedMemory->key().toStdString()); |
| | | trackingTrigger->getLastRect().properties["id"] = to_string(scoredRect.id); |
| | | trackingTrigger->getLastRect().properties["age"] = to_string(property.age); |