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; }
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); }
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; }
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())); }