houxiao
2017-06-27 d289fd8eb7a6581da0dd9c9963c15b6e7c08d744


git-svn-id: http://192.168.1.226/svn/proxy@659 454eff88-639b-444f-9e54-f578c98de674
4个文件已修改
163 ■■■■ 已修改文件
FaceServer/PbFaceList 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FaceServer/PbFaceList.pb.cc 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FaceServer/PbFaceList.pb.h 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FaceServer/sample_face_search.cpp 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FaceServer/PbFaceList
@@ -13,9 +13,33 @@
    {
        enum ImageType
        {
            MBFT_YUV = 8;
            MBFT_Y8 = 9;
            MBFT_RGB = 11;
            MBFT_SDP            = 1;
            MBFT_FMTP           = 2;
            MBFT_INDEX            = 3;
            MBFT_PTR_AVFRAME    = 4;
            MBFT_H264_NALU      = 5;
            MBFT_H264_NALU_AUX  = 6;
            MBFT_JPEG           = 7;
            MBFT_YUV            = 8;
            MBFT_Y8             = 9;
            MBFT_YUV420         = 10;
            MBFT_NV12           = 11;
            MBFT_RGB            = 12;
            MBFT_RGB888         = 13;
            MBFT_RGB565         = 14;
            MBFT_RGBA           = 15;
            MBFT_BGRA           = 16;
            MBFT_BGRA8888       = 17;
            MBFT_ABGR8888       = 18;
            MBFT_ARGB8888       = 19;
        }
        
        required uint32 idx = 1;
FaceServer/PbFaceList.pb.cc
@@ -123,19 +123,26 @@
void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] = {
      "\n\nPbFaceList\"\377\002\n\nPbFaceList\022\027\n\005magic\030\001 \002"
      "\n\nPbFaceList\"\227\005\n\nPbFaceList\022\027\n\005magic\030\001 \002"
      "(\r:\01011706629\022\023\n\013image_count\030\002 \002(\r\022\021\n\tsrc"
      "_width\030\003 \001(\r\022\022\n\nsrc_height\030\004 \001(\r\022)\n\006imag"
      "es\030\005 \003(\0132\031.PbFaceList.FaceListImage\032\360\001\n\r"
      "es\030\005 \003(\0132\031.PbFaceList.FaceListImage\032\210\004\n\r"
      "FaceListImage\022\013\n\003idx\030\001 \002(\r\022\014\n\004size\030\002 \002(\r"
      "\022:\n\004type\030\003 \002(\0162#.PbFaceList.FaceListImag"
      "e.ImageType:\007MBFT_Y8\022\r\n\005width\030\004 \002(\r\022\016\n\006h"
      "eight\030\005 \002(\r\022\022\n\ntop_left_x\030\006 \001(\r\022\022\n\ntop_l"
      "eft_y\030\007 \001(\r\022\013\n\003img\030\010 \003(\014\"4\n\tImageType\022\014\n"
      "\010MBFT_YUV\020\010\022\013\n\007MBFT_Y8\020\t\022\014\n\010MBFT_RGB\020\013"
      "eft_y\030\007 \001(\r\022\013\n\003img\030\010 \003(\014\"\313\002\n\tImageType\022\014"
      "\n\010MBFT_SDP\020\001\022\r\n\tMBFT_FMTP\020\002\022\016\n\nMBFT_INDE"
      "X\020\003\022\024\n\020MBFT_PTR_AVFRAME\020\004\022\022\n\016MBFT_H264_N"
      "ALU\020\005\022\026\n\022MBFT_H264_NALU_AUX\020\006\022\r\n\tMBFT_JP"
      "EG\020\007\022\014\n\010MBFT_YUV\020\010\022\013\n\007MBFT_Y8\020\t\022\017\n\013MBFT_"
      "YUV420\020\n\022\r\n\tMBFT_NV12\020\013\022\014\n\010MBFT_RGB\020\014\022\017\n"
      "\013MBFT_RGB888\020\r\022\017\n\013MBFT_RGB565\020\016\022\r\n\tMBFT_"
      "RGBA\020\017\022\r\n\tMBFT_BGRA\020\020\022\021\n\rMBFT_BGRA8888\020\021"
      "\022\021\n\rMBFT_ABGR8888\020\022\022\021\n\rMBFT_ARGB8888\020\023"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 398);
      descriptor, 678);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "PbFaceList", &protobuf_RegisterTypes);
  ::google::protobuf::internal::OnShutdown(&TableStruct::Shutdown);
@@ -160,9 +167,25 @@
}
bool PbFaceList_FaceListImage_ImageType_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
      return true;
    default:
      return false;
@@ -170,9 +193,25 @@
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_SDP;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_FMTP;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_INDEX;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_PTR_AVFRAME;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_H264_NALU;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_H264_NALU_AUX;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_JPEG;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_YUV;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_Y8;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_YUV420;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_NV12;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_RGB;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_RGB888;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_RGB565;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_RGBA;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_BGRA;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_BGRA8888;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_ABGR8888;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::MBFT_ARGB8888;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::ImageType_MIN;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage::ImageType_MAX;
const int PbFaceList_FaceListImage::ImageType_ARRAYSIZE;
FaceServer/PbFaceList.pb.h
@@ -49,13 +49,29 @@
}  // namespace protobuf_PbFaceList
enum PbFaceList_FaceListImage_ImageType {
  PbFaceList_FaceListImage_ImageType_MBFT_SDP = 1,
  PbFaceList_FaceListImage_ImageType_MBFT_FMTP = 2,
  PbFaceList_FaceListImage_ImageType_MBFT_INDEX = 3,
  PbFaceList_FaceListImage_ImageType_MBFT_PTR_AVFRAME = 4,
  PbFaceList_FaceListImage_ImageType_MBFT_H264_NALU = 5,
  PbFaceList_FaceListImage_ImageType_MBFT_H264_NALU_AUX = 6,
  PbFaceList_FaceListImage_ImageType_MBFT_JPEG = 7,
  PbFaceList_FaceListImage_ImageType_MBFT_YUV = 8,
  PbFaceList_FaceListImage_ImageType_MBFT_Y8 = 9,
  PbFaceList_FaceListImage_ImageType_MBFT_RGB = 11
  PbFaceList_FaceListImage_ImageType_MBFT_YUV420 = 10,
  PbFaceList_FaceListImage_ImageType_MBFT_NV12 = 11,
  PbFaceList_FaceListImage_ImageType_MBFT_RGB = 12,
  PbFaceList_FaceListImage_ImageType_MBFT_RGB888 = 13,
  PbFaceList_FaceListImage_ImageType_MBFT_RGB565 = 14,
  PbFaceList_FaceListImage_ImageType_MBFT_RGBA = 15,
  PbFaceList_FaceListImage_ImageType_MBFT_BGRA = 16,
  PbFaceList_FaceListImage_ImageType_MBFT_BGRA8888 = 17,
  PbFaceList_FaceListImage_ImageType_MBFT_ABGR8888 = 18,
  PbFaceList_FaceListImage_ImageType_MBFT_ARGB8888 = 19
};
bool PbFaceList_FaceListImage_ImageType_IsValid(int value);
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage_ImageType_ImageType_MIN = PbFaceList_FaceListImage_ImageType_MBFT_YUV;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage_ImageType_ImageType_MAX = PbFaceList_FaceListImage_ImageType_MBFT_RGB;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage_ImageType_ImageType_MIN = PbFaceList_FaceListImage_ImageType_MBFT_SDP;
const PbFaceList_FaceListImage_ImageType PbFaceList_FaceListImage_ImageType_ImageType_MAX = PbFaceList_FaceListImage_ImageType_MBFT_ARGB8888;
const int PbFaceList_FaceListImage_ImageType_ImageType_ARRAYSIZE = PbFaceList_FaceListImage_ImageType_ImageType_MAX + 1;
const ::google::protobuf::EnumDescriptor* PbFaceList_FaceListImage_ImageType_descriptor();
@@ -144,12 +160,44 @@
  // nested types ----------------------------------------------------
  typedef PbFaceList_FaceListImage_ImageType ImageType;
  static const ImageType MBFT_SDP =
    PbFaceList_FaceListImage_ImageType_MBFT_SDP;
  static const ImageType MBFT_FMTP =
    PbFaceList_FaceListImage_ImageType_MBFT_FMTP;
  static const ImageType MBFT_INDEX =
    PbFaceList_FaceListImage_ImageType_MBFT_INDEX;
  static const ImageType MBFT_PTR_AVFRAME =
    PbFaceList_FaceListImage_ImageType_MBFT_PTR_AVFRAME;
  static const ImageType MBFT_H264_NALU =
    PbFaceList_FaceListImage_ImageType_MBFT_H264_NALU;
  static const ImageType MBFT_H264_NALU_AUX =
    PbFaceList_FaceListImage_ImageType_MBFT_H264_NALU_AUX;
  static const ImageType MBFT_JPEG =
    PbFaceList_FaceListImage_ImageType_MBFT_JPEG;
  static const ImageType MBFT_YUV =
    PbFaceList_FaceListImage_ImageType_MBFT_YUV;
  static const ImageType MBFT_Y8 =
    PbFaceList_FaceListImage_ImageType_MBFT_Y8;
  static const ImageType MBFT_YUV420 =
    PbFaceList_FaceListImage_ImageType_MBFT_YUV420;
  static const ImageType MBFT_NV12 =
    PbFaceList_FaceListImage_ImageType_MBFT_NV12;
  static const ImageType MBFT_RGB =
    PbFaceList_FaceListImage_ImageType_MBFT_RGB;
  static const ImageType MBFT_RGB888 =
    PbFaceList_FaceListImage_ImageType_MBFT_RGB888;
  static const ImageType MBFT_RGB565 =
    PbFaceList_FaceListImage_ImageType_MBFT_RGB565;
  static const ImageType MBFT_RGBA =
    PbFaceList_FaceListImage_ImageType_MBFT_RGBA;
  static const ImageType MBFT_BGRA =
    PbFaceList_FaceListImage_ImageType_MBFT_BGRA;
  static const ImageType MBFT_BGRA8888 =
    PbFaceList_FaceListImage_ImageType_MBFT_BGRA8888;
  static const ImageType MBFT_ABGR8888 =
    PbFaceList_FaceListImage_ImageType_MBFT_ABGR8888;
  static const ImageType MBFT_ARGB8888 =
    PbFaceList_FaceListImage_ImageType_MBFT_ARGB8888;
  static inline bool ImageType_IsValid(int value) {
    return PbFaceList_FaceListImage_ImageType_IsValid(value);
  }
FaceServer/sample_face_search.cpp
@@ -56,7 +56,6 @@
cv_feature_t *stface_extract_feature(stface_handles& handles, const STFaceImage& image)
{
    cv_pixel_format stimgfmt = CV_PIX_FMT_GRAY8;
    int matType = 0;
    
    if (image.width > MAX_FACE_IMAGE_WIDTH || image.height > MAX_FACE_IMAGE_HEIGHT)
    {
@@ -73,7 +72,13 @@
        
        imgbufSize = image.height * image.width;
        stimgfmt = CV_PIX_FMT_GRAY8;
        matType = CV_8UC1;
    }
    else if (image.mb_type == MB_Frame::MBFT_NV12)
    {
        memcpy(imgbuf, image.buff, image.size);//#todo avoid mem cpy
        imgbufSize = image.height * image.width * 1.5;
        stimgfmt = CV_PIX_FMT_NV12;
    }
    else if (image.mb_type == MB_Frame::MBFT_RGB565)
    {
@@ -90,11 +95,10 @@
            image.width, image.height
            );
        
        imgbufSize = image.height * image.width;
        stimgfmt = CV_PIX_FMT_GRAY8;
        matType = CV_8UC1;
        imgbufSize = image.height * image.width * 1.5;
        stimgfmt = CV_PIX_FMT_YUV420P;
    }
    else if (image.mb_type == MB_Frame::MBFT_ABGR8888)
    else if (image.mb_type == MB_Frame::MBFT_RGB888)
    {
        //int ret = libyuv::ARGBToBGRA(
        //    image.buff, image.width * 4,
@@ -106,7 +110,6 @@
        //
        //imgbufSize = image.height * image.width * 4;
        //stimgfmt = CV_PIX_FMT_BGRA8888;
        //matType = CV_8UC4;
        int ret = libyuv::ABGRToI400(
                image.buff, image.width * 4,
@@ -118,7 +121,6 @@
        
        imgbufSize = image.height * image.width;
        stimgfmt = CV_PIX_FMT_GRAY8;
        matType = CV_8UC1;
        
        //{
        //    static int f = 0;
@@ -152,21 +154,15 @@
    //    fwrite(imgbuf, 1, imgbufSize, pFile);
    //    fclose(pFile);
    //}
    Mat matImg(cv::Size(image.width, image.height), matType, imgbuf);
    if (!matImg.data)
    {
        return nullptr;
    }
    cv_feature_t *p_feature = nullptr;
    cv_face_t *p_face = nullptr;
    int face_count = 0;
    cv_result_t result = CV_OK;
    result = cv_face_detect(handles.handle_detect, matImg.data, stimgfmt, matImg.cols, matImg.rows, matImg.step, CV_FACE_UP, &p_face, &face_count);
    result = cv_face_detect(handles.handle_detect, (unsigned char *)imgbuf, stimgfmt, image.width, image.height, image.width, CV_FACE_UP, &p_face, &face_count);
    if (face_count >= 1)
    {
        result = cv_verify_get_feature(handles.handle_verify, (unsigned char *)matImg.data, stimgfmt, matImg.cols, matImg.rows, matImg.step, p_face, &p_feature, nullptr);
        result = cv_verify_get_feature(handles.handle_verify, (unsigned char *)imgbuf, stimgfmt, image.width, image.height, image.width, p_face, &p_feature, nullptr);
        if (result != CV_OK)
        {
            LOGP(DEBUG, "cv_verify_get_feature failed, error code %d", result);