pansen
2019-04-11 779b80d18f41fb855bc91eb6e5470d26665e6683
QiaoJiaSystem/StructureApp/YoloRpcElement.cpp
@@ -10,8 +10,7 @@
    rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"),
              appPref.getIntData("yolo.port"), "tcp"),
    sharedMemory(nullptr),
    trackingTrigger(nullptr)
{
    trackingTrigger(nullptr) {
     trackingTrigger = new TrackingTrigger(0.5);
    sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
//    DBG(shareMemoryName);
@@ -33,22 +32,20 @@
    if (sharedMemory) {
        delete sharedMemory;
    }
    if(trackingTrigger)
    {
    if (trackingTrigger) {
        delete trackingTrigger;
        trackingTrigger=nullptr;
    }
}
void YoloRpcElement::setImage(const cv::Mat &value)
{
    if (value.size != image.size)
    {
void YoloRpcElement::setImage(const cv::Mat &value) {
    if (value.size != image.size) {
        image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data());
    }
    value.copyTo(image);
}
::YoloDetect::ObjInfos YoloRpcElement::getObjects() const
{
::YoloDetect::ObjInfos YoloRpcElement::getObjects() const {
    return objs;
}
@@ -57,26 +54,22 @@
    return trackingTrigger->getLastScoreRects();
}
 cv::Mat YoloRpcElement::getImage() const
{
cv::Mat YoloRpcElement::getImage() const {
    return image;
}
void YoloRpcElement::threadFunc()
{
void YoloRpcElement::threadFunc() {
 //  ClockTimer ct("YoloRpcElement::threadFunc");
        triggerScoredRects.clear();
    try {
            auto server = rpcClient.getServer();
            if (!server)
            {
        if (!server) {
                ERR("server is null");
                return;
            }
            objs = server->YoloDetect(image.cols, image.rows, sharedMemory->key().toStdString());//TODO
        }
        catch (std::exception &e)
        {
    catch (std::exception &e) {
            ERR(e.what())
        }
//        int size=objs.size();
@@ -87,8 +80,7 @@
//            return;
//        }
        for (auto &obj: objs)
        {
    for (auto &obj: objs) {
            if (obj.type != 0)
                continue;
@@ -102,8 +94,7 @@
            scoredRect.score = scoredRect.rect.area() > 0 ? obj.prob : 0;
            scoredRect.properties["time"] = getProperty("time");
            scoredRect.properties["imgKey"]=getProperty("imgKey");
            if (trackingTrigger->triggerOnce(scoredRect))
            {
        if (trackingTrigger->triggerOnce(scoredRect)) {
                trackingTrigger->getLastRect().properties["id"] = to_string(scoredRect.id);
                trackingTrigger->getLastRect().properties["type"] = cocoData[obj.type];
                trackingTrigger->getLastRect().properties["time"] = getProperty("time");