Exemplo n.º 1
0
janus_error janus_detect(const janus_image image, janus_attributes *attributes_array, const size_t num_requested, size_t *num_actual)
{
    TemplateList src, dst;

    Template t;
    cv::Mat input(image.height,
                  image.width,
                  image.color_space == JANUS_GRAY8 ? CV_8UC1 : CV_8UC3,
                  image.data);

    t.append(input);
    src.append(t);
    detect->project(src, dst);
    *num_actual = dst.size();
    if (dst.size() == 0)
        return JANUS_FAILURE_TO_DETECT;

    // Sort by confidence, descending
    std::sort(dst.begin(), dst.end(), compareConfidence);

    size_t count = 0;
    foreach (const Template &temp, dst) {
        QRectF rect = temp.file.rects().first();
        attributes_array->face_x = rect.x();
        attributes_array->face_y = rect.y();
        attributes_array->face_width = rect.width();
        attributes_array->face_height = rect.height();
        attributes_array->detection_confidence = temp.file.get<float>("Confidence");
        attributes_array++;
        if (++count >= num_requested)
            break;
    }
Exemplo n.º 2
0
 void projectUpdate(const Template &src, Template &dst)
 {
     dst.file = src.file;
     QList<Mat> mats;
     for (int i=0; i<src.size(); i++) {
         transforms[i%transforms.size()]->projectUpdate(Template(src.file, src[i]), dst);
         mats.append(dst);
         dst.clear();
     }
     dst.append(mats);
 }
Exemplo n.º 3
0
    Q_OBJECT

    void project(const Template &src, Template &dst) const
    {
        int half = src.size()/2;
        for (int i=0; i<half; i++) {
            Mat first = src[i];
            Mat second = src[half+i];
            Mat both;
            hconcat(first, second, both);
            dst.append(both);
        }
        dst.file = src.file;
    }
Exemplo n.º 4
0
    void project(const Template &src, Template &dst) const
    {
        HNGrayscaleImage grayscaleImage;
        NT4Context::toImage(src, &grayscaleImage);

        NeeSegmentationDetails segmentationDetails;
        NeeExtractionStatus extractionStatus;
        HNERecord hRecord;

        NResult result = NERecordCreate((NUShort)src.m().cols,(NUShort)src.m().rows, 0, &hRecord); // This seems wrong...
        assert(!NFailed(result));

        NT4Context *context = contexts.acquire();


        result = NeeExtract(context->irisExtractor, grayscaleImage, nepUnknown, &segmentationDetails, &extractionStatus, &hRecord);

        if (!(segmentationDetails.OuterBoundaryAvailable)){
            qDebug("NT4EnrollIris::project Outer Boundary not available");
        }

        if (NFailed(result)) qFatal("NT4EnrollIris::project NeeExtract() failed, result=%i.", result);
        else if (extractionStatus == neeesTemplateCreated){
            NSizeType bufferSize;
            NERecordGetSize(hRecord, 0, &bufferSize);

            Mat buffer(1, bufferSize, CV_8UC1);
            NERecordSaveToMemory(hRecord, buffer.data, bufferSize, 0, &bufferSize);

            dst = Template(src.file, buffer);
        }

        contexts.release(context);
        NObjectFree(grayscaleImage);

        //if (!Globals.EnrollAll && dst.isEmpty()) dst.append(Template(src.file, Mat()));
        if (dst.isEmpty()) dst.append(Template(src.file, Mat()));
    }