/// <summary> /// 创建 /// </summary> /// <param name="faceFeature"></param> /// <returns></returns> public static MemberData CreateStruct(this Afw.Data.Domain.FaceFeature faceFeature) { var retMemberData = new MemberData(); retMemberData.Face3DStatus = 0; retMemberData.FaceNum = 1; retMemberData.memberWithFeature.Id = faceFeature.Id; retMemberData.memberWithFeature.Name = faceFeature.Name; retMemberData.memberWithFeature.DeptId = faceFeature.DeptId; retMemberData.memberWithFeature.EmployeeNo = faceFeature.EmployeeNo; retMemberData.memberWithFeature.FaceImagePath = faceFeature.FaceImagePath; retMemberData.memberWithFeature.AsfFaceFeature.featureSize = faceFeature.FeatureSize; retMemberData.memberWithFeature.AsfFaceFeature.feature = MemoryHelper.Malloc(faceFeature.FeatureSize); MemoryHelper.Copy(faceFeature.Feature, 0, retMemberData.memberWithFeature.AsfFaceFeature.feature, faceFeature.FeatureSize); return(retMemberData); }
internal static void TestMemberEnroll() { try { IntPtr ptrImageEngine = IntPtr.Zero; var errCode = Afw.Services.Initialization.InitialEngineForImage(out ptrImageEngine); if (errCode == MError.MOK) { MemberWithFeature m = new MemberWithFeature(); m.Id = 85465; m.Name = "张华辉"; m.DeptId = 17; m.EmployeeNo = 85465; m.FaceImagePath = @"D:\document\my-private-doc\head.jpg"; var retCode = Afw.Services.MemberEnroll.Register(ptrImageEngine, ref m); if (retCode == MError.MOK) { byte[] ys = new byte[m.AsfFaceFeature.featureSize]; Marshal.Copy(m.AsfFaceFeature.feature, ys, 0, m.AsfFaceFeature.featureSize); string text = string.Empty; for (int i = 0; i < ys.Length; i++) { text += ys[i].ToString("X2"); } var e = new Afw.Data.Domain.FaceFeature { DeptId = m.DeptId, EmployeeNo = m.EmployeeNo, FaceImagePath = m.FaceImagePath, Name = m.Name, Id = m.Id, Feature = new byte[m.AsfFaceFeature.featureSize], FeatureSize = m.AsfFaceFeature.featureSize }; Marshal.Copy(m.AsfFaceFeature.feature, e.Feature, 0, m.AsfFaceFeature.featureSize); var fullpath = $"e:\\{m.Id}.dat"; Afw.Data.Helper.BinaryEntityHelper.WriteEntityIntoFile <Data.Domain.FaceFeature>(e, fullpath); Console.WriteLine(text); } else { Console.WriteLine($"Register{retCode.GetFieldDescription()}"); } } else { Console.WriteLine($"InitialEngineForImage{errCode.GetFieldDescription()}"); } var r = Afw.Core.ASFWrapper.ASFUninitEngine(ptrImageEngine); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); }
protected override void DefWndProc(ref Message m) { switch (m.Msg) { case UserMessage.WM_MESSAGE: var wmMsg = Marshal.PtrToStringAnsi(m.LParam); this.Invoke(new Action(delegate { this.txbDisplay.AppendText(wmMsg + Environment.NewLine); })); break; case UserMessage.WM_FACE_DATA_LOADED: var cnt = (int)m.LParam; var ldMsg = $"人脸数据源模块对接成功,共导入人脸数据{cnt}条![{SimplifiedUtility.GetDatetimeNow}]"; this.Invoke(new Action(delegate { this.txbDisplay.AppendText(ldMsg + Environment.NewLine); this.FaceDataGridViewRender(iFaceDataRepository.Table); })); this.ButtonReleaseForFaceDataViewReloaded(); break; case UserMessage.WM_PARENT_FORM_UNLOCK: this.Invoke(new Action(delegate { FaceFormUnlock(); })); break; case UserMessage.WM_QUERY_FACE_FEATURE_VIA_ID: var ptrReq = m.WParam; var userId = (int)m.LParam; var userExists = iFaceDataRepository.TableNoTracking.Count(i => i.Id == userId); Afw.WinForm.WinMessageHelper.SendMessage(ptrReq, UserMessage.WM_RESPONSE_FACE_FEATURE_VIA_ID, (IntPtr)userId, (IntPtr)userExists); break; case UserMessage.WM_QUERY_FACE_FEATURE_VIA_EMPLOYEE_NO: var ptrReqViaEmpNo = m.WParam; var employeeNo = (int)m.LParam; var employeeNoExists = iFaceDataRepository.TableNoTracking.Count(i => i.EmployeeNo == employeeNo); Afw.WinForm.WinMessageHelper.SendMessage(ptrReqViaEmpNo, UserMessage.WM_RESPONSE_FACE_FEATURE_VIA_EMPLOYEE_NO, (IntPtr)employeeNo, (IntPtr)employeeNoExists); break; case UserMessage.WM_FACE_DATA_REGISTER: var faceFeature = MemoryHelper.PtrToStructure <MemberData>(m.LParam); var ptrReqForm = m.WParam; var e = new Afw.Data.Domain.FaceFeature { DeptId = faceFeature.memberWithFeature.DeptId, EmployeeNo = faceFeature.memberWithFeature.EmployeeNo, FaceImagePath = faceFeature.memberWithFeature.FaceImagePath, Name = faceFeature.memberWithFeature.Name, Id = faceFeature.memberWithFeature.Id, Feature = new byte[faceFeature.memberWithFeature.AsfFaceFeature.featureSize], FeatureSize = faceFeature.memberWithFeature.AsfFaceFeature.featureSize }; Marshal.Copy(faceFeature.memberWithFeature.AsfFaceFeature.feature, e.Feature, 0, faceFeature.memberWithFeature.AsfFaceFeature.featureSize); Insert(e); registerForm.Visible = false; FaceDataGridViewAppend(e); FaceFormUnlock(); MemoryHelper.Free(m.LParam); break; case UserMessage.WM_FACE_DATA_REFRESH: this.Invoke(new Action(delegate { FaceFormUnlock(); ButtonLockForFaceDataViewReload(); FaceDataGridViewClear(); FaceDataLoad(); })); break; case UserMessage.WM_FACE_DATA_UPDATE: var faceFeatureToUpdate = MemoryHelper.PtrToStructure <MemberData>(m.LParam); var ptrReqToUpdate = m.WParam; var faceFeatureCandidate = new Afw.Data.Domain.FaceFeature { DeptId = faceFeatureToUpdate.memberWithFeature.DeptId, EmployeeNo = faceFeatureToUpdate.memberWithFeature.EmployeeNo, FaceImagePath = faceFeatureToUpdate.memberWithFeature.FaceImagePath, Name = faceFeatureToUpdate.memberWithFeature.Name, Id = faceFeatureToUpdate.memberWithFeature.Id, Feature = new byte[faceFeatureToUpdate.memberWithFeature.AsfFaceFeature.featureSize], FeatureSize = faceFeatureToUpdate.memberWithFeature.AsfFaceFeature.featureSize }; Marshal.Copy(faceFeatureToUpdate.memberWithFeature.AsfFaceFeature.feature, faceFeatureCandidate.Feature, 0, faceFeatureToUpdate.memberWithFeature.AsfFaceFeature.featureSize); Update(faceFeatureCandidate); registerForm.Visible = false; FaceDataGridViewUpdate(faceFeatureCandidate); FaceFormUnlock(); MemoryHelper.Free(m.LParam); break; case UserMessage.WM_FACE_DATA_DELETE: var rowIndex = (int)m.WParam; var faceFeatureToDelete = MemoryHelper.PtrToStructure <MemberData>(m.LParam); var faceFeatureDelCandidate = new Afw.Data.Domain.FaceFeature { DeptId = faceFeatureToDelete.memberWithFeature.DeptId, EmployeeNo = faceFeatureToDelete.memberWithFeature.EmployeeNo, FaceImagePath = faceFeatureToDelete.memberWithFeature.FaceImagePath, Name = faceFeatureToDelete.memberWithFeature.Name, Id = faceFeatureToDelete.memberWithFeature.Id, Feature = new byte[faceFeatureToDelete.memberWithFeature.AsfFaceFeature.featureSize], FeatureSize = faceFeatureToDelete.memberWithFeature.AsfFaceFeature.featureSize }; Marshal.Copy(faceFeatureToDelete.memberWithFeature.AsfFaceFeature.feature, faceFeatureDelCandidate.Feature, 0, faceFeatureToDelete.memberWithFeature.AsfFaceFeature.featureSize); Delete(faceFeatureDelCandidate); registerForm.Visible = false; FaceDataGridViewRemove(rowIndex); FaceFormUnlock(); MemoryHelper.Free(m.LParam); break; default: base.DefWndProc(ref m); //调用基类函数处理非自定义消息。 break; } }