/// <summary> /// 視窗讀入事件 /// </summary> private void Main_Load(object sender, EventArgs e) { DeviceInfos = GetDeviceInfos(); DeviceStreamProfiles = GetDeviceStreamProfiles(); InitMenuBar(); //預設DB if (File.Exists("Database.zip")) { FilePath = "Database.zip"; UserTable.Clear(); RecognitionFaceData[] faceData = null; Dictionary <int, string> userTable = null; FaceDatabaseFile.Load( FilePath, ref faceData, ref userTable); FaceData = faceData; UserTable = userTable; SaveFileToolStripMenuItem.Enabled = true; if (realSenseProgram.recognitionConfig != null) { realSenseProgram.recognitionConfig.SetDatabase(FaceData); realSenseProgram.moduleConfiguration.ApplyChanges(); } tabControl1_SelectedIndexChanged(null, null); AutoSaveOnStop = true; } }
private void SaveOtherFileToolStripMenuItem_Click(object sender, EventArgs e) { var save = new SaveFileDialog() { FileName = "", Filter = "Zip Files(*.zip)|*.zip" }; if (save.ShowDialog() != DialogResult.OK) { return; } FilePath = save.FileName; FaceDatabaseFile.Save(FilePath, FaceData, UserTable); SaveFileToolStripMenuItem.Enabled = true; }
private void OpenFileToolStripMenuItem_Click(object sender, EventArgs e) { var open = new OpenFileDialog() { FileName = "", Multiselect = false, Filter = "Zip Files(*.zip)|*.zip" }; if (open.ShowDialog() != DialogResult.OK) { return; } if (UserTable.Count != 0) { if (MessageBox.Show( "您確定要開啟檔案嗎?目前尚未儲存的結果將會遺失。", "開啟舊檔", MessageBoxButtons.YesNo, MessageBoxIcon.Question ) != DialogResult.OK) { return; } } FilePath = open.FileName; UserTable.Clear(); RecognitionFaceData[] faceData = null; Dictionary <int, string> userTable = null; FaceDatabaseFile.Load( open.FileName, ref faceData, ref userTable); FaceData = faceData; UserTable = userTable; SaveFileToolStripMenuItem.Enabled = true; if (realSenseProgram.recognitionConfig != null) { realSenseProgram.recognitionConfig.SetDatabase(FaceData); realSenseProgram.moduleConfiguration.ApplyChanges(); } tabControl1_SelectedIndexChanged(null, null); }
private void ExportToolStripMenuItem_Click(object sender, EventArgs e) { var folder = new FolderBrowserDialog(); if (folder.ShowDialog() != DialogResult.OK) { return; } //realSenseProgram.Paush(); var path = folder.SelectedPath + $"\\Database-{DateTime.UtcNow.ToString("yyyyMMdd_HHmmss")}"; Directory.CreateDirectory(path); byte[] userTable = FaceDatabaseFile.UserTableToCSVBinary(UserTable); FileStream userTableFile = new FileStream(path + "\\UserTable.csv", FileMode.Create); BinaryWriter userTableFileWriter = new BinaryWriter(userTableFile); userTableFileWriter.Write(userTable); userTableFileWriter.Flush(); userTableFileWriter.Close(); userTableFile.Close(); foreach (var user in UserTable.Keys) { var path2 = path + "\\" + user; Directory.CreateDirectory(path2); var userFaces = FaceData.Where(x => x.ForeignKey == user); foreach (var face in userFaces) { face.Image.Save(path2 + "\\" + face.PrimaryKey + ".jpg"); } } MessageBox.Show( "資料庫已成功匯出至指定目錄", "匯出成功", MessageBoxButtons.OK, MessageBoxIcon.Information); //realSenseProgram.UnPaush(); }
private void ImportToolStripMenuItem_Click(object sender, EventArgs e) { var folder = new FolderBrowserDialog(); if (folder.ShowDialog() != DialogResult.OK) { return; } var path = folder.SelectedPath; int temp_ = 0;//無用變數 var subDirs = new DirectoryInfo(path).EnumerateDirectories() .Where(x => int.TryParse(x.Name, out temp_)); #region UserTable讀取 var userTablePath = path + $"\\UserTable.csv"; Dictionary <int, string> userTable = new Dictionary <int, string>(); if (!File.Exists(userTablePath)) { var importUserTable = MessageBox.Show( "找不到UserTable.csv檔案,該檔案用以將使用者ID與姓名對應," + "該檔案雖非必要,但姓名將會使用ID作為代替,您是否繼續匯入?", "匯入時發現問題", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (importUserTable != DialogResult.Yes) { return; } foreach (var dir in subDirs) { userTable[int.Parse(dir.Name)] = dir.Name; } } else { var fileStream = new FileStream(userTablePath, FileMode.Open); userTable = FaceDatabaseFile.CSVBinaryToUserTable( FaceDatabaseFile.StreamToBytes(fileStream)); } #endregion #region 照片讀取 List <RecognitionFaceData> faceData = new List <RecognitionFaceData>(); int IdStart = 0; if (FaceData.Count() > 0) { IdStart = FaceData.Select(x => x.PrimaryKey).Max() + 1; } foreach (var dir in subDirs) { foreach (var file in dir.EnumerateFiles()) { var faceImage = new RecognitionFaceData(); faceImage.PrimaryKey = IdStart++; faceImage.ForeignKey = int.Parse(dir.Name); faceImage.Image = new Bitmap(file.FullName); faceData.Add(faceImage); } } if (FaceData == null || FaceData.Count() == 0) { FaceData = faceData.ToArray(); } else { FaceData = FaceData.Union(faceData).ToArray(); } if (UserTable == null || UserTable.Count == 0) { UserTable = userTable; } else { var TEMP = UserTable.Union(userTable).ToArray(); foreach (var keyvalue in TEMP) { UserTable[keyvalue.Key] = keyvalue.Value; } } SaveFileToolStripMenuItem.Enabled = true; if (realSenseProgram.recognitionConfig != null) { realSenseProgram.recognitionConfig.SetDatabase(FaceData); realSenseProgram.moduleConfiguration.ApplyChanges(); } tabControl1_SelectedIndexChanged(null, null); #endregion MessageBox.Show( "已成功自指定目錄讀取資料", "匯入成功", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void SaveFileToolStripMenuItem_Click(object sender, EventArgs e) { FaceDatabaseFile.Save(FilePath, FaceData, UserTable); }