//using System; //using System.Runtime.InteropServices; //using OpenCvSharp; //namespace FaceAI //{ // /** // * @brief 人脸表情属性枚举 // */ // enum BDFaceAttributeEmotionType // { // BDFACE_ATTRIBUTE_EMOTION_FROWN = 0, // 皱眉 // BDFACE_ATTRIBUTE_EMOTION_SMILE = 1, // 笑 // BDFACE_ATTRIBUTE_EMOTION_CALM = 2, // 平静 // }; // /** // * @brief 人脸种族属性枚举 // */ // enum BDFaceRace // { // BDFACE_RACE_YELLOW = 0, // 黄种人 // BDFACE_RACE_WHITE = 1, // 白种人 // BDFACE_RACE_BLACK = 2, // 黑种人 // BDFACE_RACE_INDIAN = 3, // 印第安人 // }; // /** // * @brief 眼镜状态属性枚举 // */ // enum BDFaceGlasses // { // BDFACE_NO_GLASSES = 0, // 无眼镜 // BDFACE_GLASSES = 1, // 有眼镜 // BDFACE_SUN_GLASSES = 2, // 墨镜 // }; // /** // * @brief 性别属性枚举 // */ // enum BDFaceGender // { // BDFACE_GENDER_FEMAILE = 0, // 女性 // BDFACE_GENDER_MALE = 1, // 男性 // }; // /** // * @brief 人脸属性结构体 // */ // [StructLayout(LayoutKind.Sequential, Pack = 1)] // struct BDFaceAttribute // { // public int age; // 年龄 // public BDFaceRace race; // 种族 // public BDFaceAttributeEmotionType emotion; // 表情 // public BDFaceGlasses glasses; // 戴眼镜状态 // public BDFaceGender gender; // 性别 // }; // // 人脸属性示例及接口 // class FaceAttr // { // // 获取人脸属性 // [DllImport("BaiduFaceApi.dll", EntryPoint = "face_attr", CharSet = CharSet.Ansi // , CallingConvention = CallingConvention.Cdecl)] // public static extern int face_attr(IntPtr ptr, IntPtr mat); // // 测试获取人脸属性 // public void test_get_face_attr() // { // int max_face_num = 5; // 设置最多检测跟踪人数(多人脸检测),默认为1,最多可设为50 // BDFaceAttribute[] attr_info = new BDFaceAttribute[max_face_num]; // int size = Marshal.SizeOf(typeof(BDFaceAttribute)); // IntPtr ptT = Marshal.AllocHGlobal(size * max_face_num); // string img_path = "../images/rgb.png"; // Mat mat = Cv2.ImRead(img_path); // int faceNum = face_attr(ptT, mat.CvPtr); // Console.WriteLine("faceNum is:" + faceNum); // for (int index = 0; index < faceNum; index++) // { // IntPtr ptr = new IntPtr(); // if (8 == IntPtr.Size) // { // ptr = (IntPtr)(ptT.ToInt64() + size * index); // } // else if (4 == IntPtr.Size) // { // ptr = (IntPtr)(ptT.ToInt32() + size * index); // } // attr_info[index] = (BDFaceAttribute)Marshal.PtrToStructure(ptr, typeof(BDFaceAttribute)); // // 年龄 // Console.WriteLine("age is {0}:", attr_info[index].age); // // 种族 // Console.WriteLine("race is:{0}", attr_info[index].race); // // 表情 // Console.WriteLine("emotion is:{0}", attr_info[index].emotion); // // 戴眼镜状态 // Console.WriteLine("glasses is:{0}", attr_info[index].glasses); // // 性别 // Console.WriteLine("gender is:{0}", attr_info[index].gender); // } // Marshal.FreeHGlobal(ptT); // } // } //}