public IEnumerator ShowCroppedFaces()
    {
        croppedFaceDatas = CroppedFaceData.LoadData(faceDataFile);
        if (croppedFaceDatas != null)
        {
            foreach (CroppedFaceData c in croppedFaceDatas)
            {
                GameObject            g   = Instantiate(facePrefab, croppedFaceContainer.transform);
                Image                 img = g.GetComponent <Image>();
                CroppedFaceProperties cfp = g.GetComponent <CroppedFaceProperties>();
                cfp.imageName  = c.imageName;
                cfp.imageIndex = croppedFaceDatas.IndexOf(c);

                cfp.InitFaceProperties(c);


                faces.Add(g);
                print(string.Format("loading image : {0}", c.imageName));
                StartCoroutine(LoadImageFromDisk(img, c.imageName));
            }
        }


        Invoke("HideLoadingPanelOnly", .1f);
        yield return(null);
    }
示例#2
0
    public static List <CroppedFaceData> DeleteCroppedFace(CroppedFaceData c, List <CroppedFaceData> cd, string saveFileName)
    {
        List <CroppedFaceData> origList = cd;

        try
        {
            string dataPath = Application.persistentDataPath;

            if (Application.platform != RuntimePlatform.OSXPlayer)
            {
                dataPath += "/croppedfaces";
            }
            if (!Directory.Exists(dataPath))
            {
                Directory.CreateDirectory(dataPath);
            }
            string finalImagePath = Path.Combine(dataPath, "faceimages");
            if (!Directory.Exists(finalImagePath))
            {
                Directory.CreateDirectory(finalImagePath);
            }
            finalImagePath = Path.Combine(finalImagePath, c.imageName);

            cd.Remove(c);
            if (File.Exists(finalImagePath))
            {
                MonoBehaviour.print(string.Format("Deleting : {0} as it exist", finalImagePath));
                File.Delete(finalImagePath);
                MonoBehaviour.print("file deleted successfully");
            }
            SaveCroppedFaceFromData(cd, saveFileName);

            return(cd);
        }
        catch (Exception e)
        {
            MonoBehaviour.print(string.Format("Error occured when trying to save data from list : {0}", e));
            return(origList);
        }
    }
示例#3
0
    public void Copy(ref CroppedFaceData cd)
    {
        cd = new CroppedFaceData();

        cd.imageName    = this.imageName;
        cd.saveFaceHash = this.saveFaceHash;
        cd.scale        = new float[scale.Length];
        cd.sizeDelta    = new float[sizeDelta.Length];
        cd.position     = new float[position.Length];
        cd.rotation     = new float[rotation.Length];
        cd.faceColor    = new float[faceColor.Length];



        for (int i = 0; i < scale.Length; i++)
        {
            cd.scale[i] = this.scale[i];
        }

        for (int i = 0; i < sizeDelta.Length; i++)
        {
            cd.sizeDelta[i] = this.sizeDelta[i];
        }

        for (int i = 0; i < position.Length; i++)
        {
            cd.position[i] = this.position[i];
        }

        for (int i = 0; i < rotation.Length; i++)
        {
            cd.rotation[i] = this.rotation[i];
        }

        for (int i = 0; i < faceColor.Length; i++)
        {
            cd.faceColor[i] = this.faceColor[i];
        }
    }
    public void InitFaceProperties(CroppedFaceData c)
    {
        dataPath = Application.persistentDataPath;

        if (Application.platform != RuntimePlatform.OSXPlayer)
        {
            dataPath += "/croppedfaces";
        }
        finalSavePath = Path.Combine(dataPath, "faceimages");
        finalSavePath = Path.Combine(finalSavePath, imageName);
        cfd           = c;
        faceHash      = cfd.saveFaceHash;
        if (face != null && face2 != null)
        {
            isInitialized = true;
            GetComponent <Image>().color = new Color(c.faceColor[0], c.faceColor[1], c.faceColor[2], c.faceColor[3]);
        }
        else
        {
            isInitialized = false;
        }

        if (gameController.faceHash == faceHash || gameController.faceHash2 == faceHash)
        {
            faceInUse = true;
            ShowRemoveButton(true);

            if (gameController.faceHash == faceHash)
            {
                gameController.loadedFaceIndex = imageIndex;
            }
            else if (gameController.faceHash2 == faceHash)
            {
                gameController.loadedFaceIndex2 = imageIndex;
            }
        }
    }
示例#5
0
    public static int SaveCroppedFaceDict(string saveDataFileName, CroppedFaceData cfd, RawImage rwimg)
    {
        try
        {
            MonoBehaviour.print(Application.persistentDataPath);
            MonoBehaviour.print(Application.persistentDataPath);
            string dataPath = Application.persistentDataPath;

            if (Application.platform != RuntimePlatform.OSXPlayer)
            {
                dataPath += "/croppedfaces";
            }
            string finalSavePath = Path.Combine(dataPath, saveDataFileName);
            MonoBehaviour.print(string.Format("Final Save path : {0}", finalSavePath));
            if (File.Exists(finalSavePath))
            {
                MonoBehaviour.print("file exist,saving data");
                Dictionary <string, CroppedFaceData> croppedFaceFiles = new Dictionary <string, CroppedFaceData>();
                croppedFaceFiles = LoadDataDict(saveDataFileName);;

                int totalScavedFaces = croppedFaceFiles.Count;
                MonoBehaviour.print(string.Format("total faces :{0}", totalScavedFaces));

                foreach (string s in croppedFaceFiles.Keys)
                {
                    MonoBehaviour.print(string.Format("loaded cropped face file : {0}", s));
                }

                if (totalScavedFaces < 5)
                {
                    FileStream fileStream;
                    fileStream = new FileStream(finalSavePath, FileMode.Open, FileAccess.Write);
                    BinaryFormatter b         = new BinaryFormatter();
                    string          save_name = string.Format("croppedface_{0}", croppedFaceFiles.Count);
                    croppedFaceFiles.Add(save_name, cfd);
                    MonoBehaviour.print(string.Format("total faces : {0}", croppedFaceFiles.Count));
                    foreach (string s in croppedFaceFiles.Keys)
                    {
                        MonoBehaviour.print(string.Format("writing cropped face file : {0}", s));
                    }
                    b.Serialize(fileStream, croppedFaceFiles);
                    fileStream.Flush();
                    fileStream.Close();
                    string saveImageName = Path.Combine(dataPath, "faceimages");
                    saveImageName = Path.Combine(saveImageName, save_name + "png");
                    File.WriteAllBytes(saveImageName, (rwimg.texture as Texture2D).EncodeToPNG());
                    MonoBehaviour.print("face is saved");
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                MonoBehaviour.print("Does Not Exist , Creating new File");
                Dictionary <string, CroppedFaceData> croppedFaceFiles = new Dictionary <string, CroppedFaceData>();

                MonoBehaviour.print(string.Format(" total faces :{0}", croppedFaceFiles.Count));
                string save_name = string.Format("croppedface_{0}", croppedFaceFiles.Count);
                croppedFaceFiles.Add(save_name, cfd);
                foreach (string s in croppedFaceFiles.Keys)
                {
                    MonoBehaviour.print(string.Format("writing first cropped face file : {0}", s));
                }
                FileStream      fileStream = new FileStream(finalSavePath, FileMode.Create, FileAccess.Write);
                BinaryFormatter b          = new BinaryFormatter();

                b.Serialize(fileStream, croppedFaceFiles);

                fileStream.Flush();
                fileStream.Close();
                string saveImageName = Path.Combine(dataPath, "faceimages");
                saveImageName = Path.Combine(saveImageName, save_name + "png");
                File.WriteAllBytes(saveImageName, (rwimg.texture as Texture2D).EncodeToPNG());
                MonoBehaviour.print("face is saved");
                return(1);
            }
        }
        catch (Exception e)
        {
            MonoBehaviour.print("error : " + e);
            return(-1);
        }
    }
示例#6
0
    public static int SaveCroppedFace(string saveDataFileName, CroppedFaceData cfd, RawImage rwimg)
    {
        try
        {
            MonoBehaviour.print(Application.persistentDataPath);
            MonoBehaviour.print(Application.persistentDataPath);
            string dataPath = Application.persistentDataPath;

            if (Application.platform != RuntimePlatform.OSXPlayer)
            {
                dataPath += "/croppedfaces";
            }
            if (!Directory.Exists(dataPath))
            {
                Directory.CreateDirectory(dataPath);
            }
            string finalSavePath = Path.Combine(dataPath, saveDataFileName);
            MonoBehaviour.print(string.Format("Final Save path : {0}", finalSavePath));
            if (File.Exists(finalSavePath))
            {
                MonoBehaviour.print("file exist,saving data");
                List <CroppedFaceData> croppedFaceFiles = new List <CroppedFaceData>();
                croppedFaceFiles = LoadData(saveDataFileName);

                int totalScavedFaces = croppedFaceFiles.Count;
                MonoBehaviour.print(string.Format("total faces :{0}", totalScavedFaces));



                if (totalScavedFaces < 5)
                {
                    FileStream fileStream;
                    fileStream = new FileStream(finalSavePath, FileMode.Create, FileAccess.Write);
                    BinaryFormatter b         = new BinaryFormatter();
                    string          save_name = string.Format("croppedface_{0}.png", (int)(UnityEngine.Random.Range(0, 9999)));
                    cfd.imageName = save_name;
                    croppedFaceFiles.Add(cfd);
                    MonoBehaviour.print(string.Format("total faces : {0}", croppedFaceFiles.Count));

                    b.Serialize(fileStream, croppedFaceFiles);
                    fileStream.Flush();
                    fileStream.Close();
                    string saveImageName = Path.Combine(dataPath, "faceimages");
                    if (!Directory.Exists(saveImageName))
                    {
                        Directory.CreateDirectory(saveImageName);
                    }
                    saveImageName = Path.Combine(saveImageName, save_name);
                    File.WriteAllBytes(saveImageName, (rwimg.texture as Texture2D).EncodeToPNG());
                    MonoBehaviour.print("face is saved");
                    return(1);
                }
                else
                {
                    return(0);
                }
            }
            else
            {
                MonoBehaviour.print("Does Not Exist , Creating new File");
                List <CroppedFaceData> croppedFaceFiles = new List <CroppedFaceData>();

                MonoBehaviour.print(string.Format(" total faces :{0}", croppedFaceFiles.Count));
                string save_name = string.Format("croppedface_{0}.png", (int)(UnityEngine.Random.Range(0, 9999)));
                cfd.imageName = save_name;
                croppedFaceFiles.Add(cfd);

                FileStream      fileStream = new FileStream(finalSavePath, FileMode.Create, FileAccess.Write);
                BinaryFormatter b          = new BinaryFormatter();

                b.Serialize(fileStream, croppedFaceFiles);

                fileStream.Flush();
                fileStream.Close();
                fileStream.Dispose();
                string saveImageName = Path.Combine(dataPath, "faceimages");
                if (!Directory.Exists(saveImageName))
                {
                    Directory.CreateDirectory(saveImageName);
                }
                saveImageName = Path.Combine(saveImageName, save_name);
                File.WriteAllBytes(saveImageName, (rwimg.texture as Texture2D).EncodeToPNG());
                MonoBehaviour.print("face is saved");

                return(1);
            }
        }
        catch (Exception e)
        {
            MonoBehaviour.print("error : " + e);
            return(-1);
        }
    }
 public void DeleteCroppedFaceData(CroppedFaceData c)
 {
     CroppedFaceData.DeleteCroppedFace(c, croppedFaceDatas, faceDataFile);
     StartCoroutine(ResetAllCroppedFaces());
 }