9 #ifndef __PBIO_API__PBIO__RAW_SAMPLE_H_
10 #define __PBIO_API__PBIO__RAW_SAMPLE_H_
15 #include "ComplexObject.h"
16 #include "ExceptionCheck.h"
19 #ifndef WITHOUT_PROCESSING_BLOCK
20 #include "pbio/Context.h"
23 #include "stl_wraps_impls/WrapOStreamImpl.h"
24 #include "stl_wraps_impls/WrapVectorImpl.h"
29 class AgeGenderEstimator;
32 class LivenessEstimator;
33 class QualityEstimator;
34 class FaceQualityEstimator;
37 class EmotionsEstimator;
38 class DepthLivenessEstimator;
39 class IRLivenessEstimator;
40 class Liveness2DEstimator;
41 class FaceAttributesEstimator;
42 class RawSampleExtractor;
466 void const* &data)
const;
541 std::ostream &binary_stream,
605 pbio::stl_wraps::WrapOStream &binary_stream,
646 std::ostream &binary_stream,
687 pbio::stl_wraps::WrapOStream &binary_stream,
759 void save(pbio::stl_wraps::WrapOStream &binary_stream,
ImageFormat format)
const;
817 pbio::stl_wraps::WrapOStream &binary_stream,
818 const double space_translation_x = 0,
819 const double space_translation_y = 0,
820 const double space_scale = 1)
const;
826 std::ostream &binary_stream,
827 const double space_translation_x = 0,
828 const double space_translation_y = 0,
829 const double space_scale = 1)
const;
864 #ifndef WITHOUT_PROCESSING_BLOCK
877 void* getPtr()
const;
883 const DHPtr &dll_handle,
899 friend class RawSampleExtractor;
900 friend class object_with_ref_counter<
RawSample>;
914 RawSample::RawSample(
915 const DHPtr &dll_handle,
917 ComplexObject(dll_handle, impl)
928 void* exception = NULL;
930 _dll_handle->RawSample_getRectangle(
938 checkException(exception, *_dll_handle);
947 std::vector<float> coordinates;
949 void* exception = NULL;
951 _dll_handle->RawSample_getLandmarks(
954 pbio::stl_wraps::assign_floats_vector_func,
957 checkException(exception, *_dll_handle);
959 std::vector<Point> points(coordinates.size() / 3);
961 for(
size_t i = 0; i < points.size(); ++i)
963 points[i].x = coordinates[i * 3 + 0];
964 points[i].y = coordinates[i * 3 + 1];
965 points[i].z = coordinates[i * 3 + 2];
975 std::vector<float> coordinates;
977 void* exception = NULL;
979 _dll_handle->RawSample_getIrisLandmarks(
982 pbio::stl_wraps::assign_floats_vector_func,
985 checkException(exception, *_dll_handle);
987 std::vector<Point> points(coordinates.size() / 3);
989 for(
size_t i = 0; i < points.size(); ++i)
991 points[i].x = coordinates[i * 3 + 0];
992 points[i].y = coordinates[i * 3 + 1];
993 points[i].z = coordinates[i * 3 + 2];
1005 void* exception = NULL;
1007 _dll_handle->RawSample_getLeftEye(
1013 checkException(exception, *_dll_handle);
1023 void* exception = NULL;
1025 _dll_handle->RawSample_getRightEye(
1031 checkException(exception, *_dll_handle);
1041 void* exception = NULL;
1043 _dll_handle->RawSample_getAngles(
1050 checkException(exception, *_dll_handle);
1058 void* exception = NULL;
1060 const int result = _dll_handle->RawSample_getID(
1064 checkException(exception, *_dll_handle);
1072 void* exception = NULL;
1074 const int result = _dll_handle->RawSample_getFrameID(
1078 checkException(exception, *_dll_handle);
1087 void* exception = NULL;
1089 const int result = _dll_handle->RawSample_getType(
1093 checkException(exception, *_dll_handle);
1103 void* exception = NULL;
1107 _dll_handle->RawSample_getFaceCutRectangle(
1113 checkException(exception, *_dll_handle);
1115 std::vector<RawSample::Point> result(4);
1116 for(
int i = 0; i < 4; ++i)
1118 result[i].x = corners[i * 2 + 0];
1119 result[i].y = corners[i * 2 + 1];
1128 std::ostream &binary_stream,
1132 pbio::stl_wraps::WrapOStreamImpl binary_stream_wrap(binary_stream);
1142 int32_t width, height;
1143 std::ostringstream stream;
1144 pbio::stl_wraps::WrapOStreamImpl binary_stream_wrap(stream);
1146 void* exception = NULL;
1148 _dll_handle->RawSample_cutFaceImage(
1150 &binary_stream_wrap,
1151 pbio::stl_wraps::WrapOStream::write_func,
1159 checkException(exception, *_dll_handle);
1165 (
unsigned char*) stream.str().c_str(),
1166 stream.str().size());
1173 pbio::stl_wraps::WrapOStream &binary_stream,
1177 void* exception = NULL;
1181 _dll_handle->RawSample_cutFaceImage(
1184 pbio::stl_wraps::WrapOStream::write_func,
1192 checkException(exception, *_dll_handle);
1199 std::ostream &binary_stream,
1203 pbio::stl_wraps::WrapOStreamImpl binary_stream_wrap(binary_stream);
1215 pbio::stl_wraps::WrapOStream &binary_stream,
1219 void* exception = NULL;
1221 const RawImage::CapiData cdata = original_image.makeCapiData();
1223 _dll_handle->RawSample_cutFaceImage_original_raw_image_with_crop(
1230 cdata.crop_info_offset_x,
1231 cdata.crop_info_offset_y,
1232 cdata.crop_info_data_image_width,
1233 cdata.crop_info_data_image_height,
1235 pbio::stl_wraps::WrapOStream::write_func,
1240 checkException(exception, *_dll_handle);
1246 std::ostream &binary_stream,
1249 pbio::stl_wraps::WrapOStreamImpl binary_stream_wrap(binary_stream);
1251 save(binary_stream_wrap, format);
1256 pbio::stl_wraps::WrapOStream &binary_stream,
1259 void* exception = NULL;
1261 _dll_handle->RawSample_save(
1264 pbio::stl_wraps::WrapOStream::write_func,
1268 checkException(exception, *_dll_handle);
1276 void* exception = NULL;
1278 const bool result = _dll_handle->RawSample_hasOriginalImage(
1282 checkException(exception, *_dll_handle);
1290 void* exception = NULL;
1292 const float result = _dll_handle->RawSample_getScore(
1296 checkException(exception, *_dll_handle);
1305 void* exception = NULL;
1307 const float result = _dll_handle->RawSample_getFaceVisibilityScore(
1311 checkException(exception, *_dll_handle);
1323 void const* &data)
const
1325 int32_t rows_, cols_, format_;
1327 void* exception = NULL;
1329 _dll_handle->RawSample_getOriginalImage(
1337 checkException(exception, *_dll_handle);
1348 void* exception = NULL;
1350 pbio::facerec::RawSampleImpl*
const raw_sampl_impl =
1351 _dll_handle->RawSample_downscaleToPreferredSize(
1355 checkException(exception, *_dll_handle);
1357 return RawSample::Ptr::make(_dll_handle, raw_sampl_impl);
1360 #ifndef WITHOUT_PROCESSING_BLOCK
1364 void* exception = NULL;
1366 HContext* handle = _dll_handle->RawSample_toContext(
1370 checkException(exception, *_dll_handle);
1379 pbio::stl_wraps::WrapOStream &binary_stream,
1380 const double space_translation_x,
1381 const double space_translation_y,
1382 const double space_scale)
const
1384 void* exception = NULL;
1386 _dll_handle->RawSample_save_without_image(
1389 pbio::stl_wraps::WrapOStream::write_func,
1390 space_translation_x,
1391 space_translation_y,
1395 checkException(exception, *_dll_handle);
1400 std::ostream &binary_stream,
1401 const double space_translation_x,
1402 const double space_translation_y,
1403 const double space_scale)
const
1405 pbio::stl_wraps::WrapOStreamImpl binary_stream_wrap(binary_stream);
1409 space_translation_x,
1410 space_translation_y,
1415 void* RawSample::getPtr()
const
1425 #endif // __PBIO_API__PBIO__RAW_SAMPLE_H_
int width
Ширина прямоугольника.
Definition: Rectangle.h:47
RawImage cutFaceRawImage(RawImage::Format color_model, FaceCutType cut_type) const
Обрезать лицо и выдать в формате RawImage (с декодированными пикселями). Потокобезопасный.
Definition: RawSample.h:1138
std::vector< Point > getFaceCutRectangle(FaceCutType cut_type) const
Получить прямоугольник (для предпросмотра обрезки). Потокобезопасный.
Definition: RawSample.h:1100
Интерфейсный объект для определения качества образца лица.
Definition: FaceQualityEstimator.h:41
Структура, предоставляющая данные изображения в "сыром" формате и опциональную информацию для обрезки...
Definition: RawImage.h:28
Условно фронтальный ТИЛ (тип изображения лица) по ГОСТ Р ИСО / МЭК 19794-5 (ISO/IEC 19794-5 Token Fro...
Definition: RawSample.h:151
Интерфейсный объект для создания других интерфейсных объектов.
Definition: FacerecService.h:64
int x
Координата X левого верхнего угла прямоугольника.
Definition: Rectangle.h:33
Интерфейсный объект для определения аттрибутов лица.
Definition: FaceAttributesEstimator.h:28
Интерфейсный объект для определения принадлежности лица реальному человеку.
Definition: Liveness2DEstimator.h:41
BMP (без сжатия).
Definition: RawSample.h:122
Интерфейсный объект для определения принадлежности лица реальному человеку.
Definition: LivenessEstimator.h:33
Интерфейсный объект, хранящий образец лица.
Definition: RawSample.h:49
SampleType
Типы образцов (см. также Capturer::CapturerType).
Definition: RawSample.h:65
Интерфейсный объект для определения принадлежности лица реальному человеку.
Definition: DepthLivenessEstimator.h:34
pbio::Point Point
2D точка.
Definition: RawSample.h:166
void getOriginalImage(int &rows, int &cols, IRawImage::Format &format, void const *&data) const
Получить оригинальное изображение. Выбрасывается исключение, если образец не содержит оригинальное из...
Definition: RawSample.h:1319
JPEG (сжатие с потерями).
Definition: RawSample.h:101
float getFaceVisibilityScore() const
Получить оценку видимости лица. Потокобезопасный.
Definition: RawSample.h:1303
std::vector< Point > getLandmarks() const
Получить антропометрические точки лица. Только для фронтальных образцов. Потокобезопасный.
Definition: RawSample.h:945
Лицо в профиль, смотрящее вправо.
Definition: RawSample.h:86
float x
Координата X.
Definition: Point.h:19
Definition: Recognizer.h:64
Интерфейсный объект для создания и сравнения шаблонов.
Definition: Recognizer.h:37
ImageFormat
Форматы изображения для сохранения (сериализации).
Definition: RawSample.h:94
LightSmartPtr< RawSample >::tPtr Ptr
Псевдоним для типа умного указателя на RawSample.
Definition: RawSample.h:58
Angles getAngles() const
Получить углы ориентации лица. Только для фронтальных образцов. Потокобезопасный. ...
Definition: RawSample.h:1037
SampleType getType() const
Получить тип образца. Потокобезопасный.
Definition: RawSample.h:1085
Полный фронтальный ТИЛ (тип изображения лица) по ГОСТ Р ИСО / МЭК 19794-5 (ISO/IEC 19794-5 Full Front...
Definition: RawSample.h:144
Rectangle getRectangle() const
Получить ограничивающий прямоугольник лица. Потокобезопасный.
Definition: RawSample.h:924
3D-точка.
Definition: Point.h:12
VideoWorker - интерфейсный объект для трекинга, обработки и распознавания лиц на нескольких видеопото...
Definition: VideoWorker.h:63
int height
Высота прямоугольника.
Definition: Rectangle.h:54
void save(std::ostream &binary_stream, ImageFormat format) const
Сохранить (сериализовать) образец. Оригинальное изображение не сохраняется. (т.е. сохраняется только ...
Definition: RawSample.h:1245
void saveWithoutImage(pbio::stl_wraps::WrapOStream &binary_stream, const double space_translation_x=0, const double space_translation_y=0, const double space_scale=1) const
Сохранить (сериализовать) всю информацию, кроме изображения. Вы должны сохранить изображение самостоя...
Definition: RawSample.h:1378
float yaw
Угол поворота вокруг вертикальной оси в градусах.
Definition: RawSample.h:180
pbio::Rectangle Rectangle
Прямоугольник на изображении.
Definition: RawSample.h:159
Definition: SmartPtr.h:84
std::vector< Point > getIrisLandmarks() const
Получить характерные точки глаз. Только для фронтальных образцов. Потокобезопасный.
Definition: RawSample.h:973
Прямоугольник на изображении.
Definition: Rectangle.h:12
float y
Координата Y.
Definition: Point.h:26
Фронтальное лицо.
Definition: RawSample.h:72
Интерфейсный объект для определения пола и возраста.
Definition: AgeGenderEstimator.h:46
Point getRightEye() const
Получить позицию правого глаза. Только для фронтальных образцов. Потокобезопасный.
Definition: RawSample.h:1019
Интерфейсный объект для определения качества образца лица.
Definition: QualityEstimator.h:41
int getFrameID() const
Получить ID кадра, на котором был обнаружен образец (для образцов, полученных с помощью VideoWorker)...
Definition: RawSample.h:1070
Интерфейсный объект для детекции и трекинга лиц на изображениях или видеопоследовательностях.
Definition: Capturer.h:16
Углы ориентации лица.
Definition: RawSample.h:173
VideoWorker - интерфейсный объект для трекинга, обработки и распознавания лиц на нескольких видеопото...
Definition: VideoWorker.h:105
TIFF (сжатие без потерь).
Definition: RawSample.h:115
Интерфейсный объект для детекции и трекинга лиц на изображениях или видеопоследовательностях.
Definition: Capturer.h:36
pbio::Context toContext() const
преобразет RawSample в контейнер-Context.
Definition: RawSample.h:1362
FaceCutType
Типы обрезки лица.
Definition: RawSample.h:130
float roll
Угол поворота в картинной плоскости в градусах.
Definition: RawSample.h:194
Context - интерфейсный объект для хранения данных и взаимодействия с методами из Processing Block API...
Definition: Context.h:51
Point getLeftEye() const
Получить позицию левого глаза. Только для фронтальных образцов. Потокобезопасный. ...
Definition: RawSample.h:1001
Лицо в профиль, смотрящее влево.
Definition: RawSample.h:79
float pitch
Угол поворота вокруг горизонтальной оси в градусах.
Definition: RawSample.h:187
int y
Координата Y левого верхнего угла прямоугольника.
Definition: Rectangle.h:40
float getScore() const
Получить уверенность детектирования лица (для образцов, полученных с помощью поддерживаемого Capturer...
Definition: RawSample.h:1288
Definition: FacerecService.mm:79
RawSample::Ptr downscaleToPreferredSize() const
Создать копию образца с внутренним изображением лица, уменьшенным до предпочтительного размера и без ...
Definition: RawSample.h:1346
int getID() const
Получить целочисленный идентификатор. Потокобезопасный.
Definition: RawSample.h:1056
Format
Формат данных изображения.
Definition: IRawImage.h:46
PNG (сжатие без потерь).
Definition: RawSample.h:108
void cutFaceImage(std::ostream &binary_stream, ImageFormat format, FaceCutType cut_type) const
Обрезать лицо и сохранить в указанном формате. Потокобезопасный.
Definition: RawSample.h:1127
Интерфейсный объект для определения принадлежности лица реальному человеку.
Definition: IRLivenessEstimator.h:34
Базовый (подходит для образцов всех типов).
Definition: RawSample.h:137
bool hasOriginalImage() const
Хранит ли образец оригинальное изображение, с которого он был получен (true для образцов, полученных с помощью VideoWorker с включенным параметром store_original_frame_in_raw_sample). Потокобезопасный.
Definition: RawSample.h:1274
Интерфейсный объект для определения эмоций.
Definition: EmotionsEstimator.h:41