Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 private void SaveFileToolStripMenuItem_Click(object sender, EventArgs e)
 {
     FaceDatabaseFile.Save(FilePath,
                           FaceData,
                           UserTable);
 }