首页 > 解决方案 > 使用统一 3D 进行面部识别。如何在 C# 中修复此代码?

问题描述

这段代码在不执行 IF 语句的第一部分的情况下继续进入 else 条件。

public void OnSaveButtonClick ()
{
    Debug.Log ("User clicked [Save] button.");

    string saveDirectoryPath = Path.Combine (Application.persistentDataPath, saveDirectoryName);

    if (model != null)
    {
        // Clean up old files.
        if (Directory.Exists (saveDirectoryPath))
        {
            DirectoryInfo directoryInfo = new DirectoryInfo (saveDirectoryPath);
            foreach (FileInfo fileInfo in directoryInfo.GetFiles())
            {
                if ((fileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 
                {
                    fileInfo.Attributes = FileAttributes.Normal;
                }
            }
            if ((directoryInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            {
                directoryInfo.Attributes = FileAttributes.Directory;
            }
            directoryInfo.Delete (true);
        }
        Directory.CreateDirectory (saveDirectoryPath);

        // save the train data.
        model.write (Path.Combine (saveDirectoryPath, "traindata.yml"));

        // save the preprocessedfaces.
        #if UNITY_WEBGL && !UNITY_EDITOR
        string format = "jpg";
        MatOfInt compressionParams = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY, 100);
        #else
        string format = "png";
        MatOfInt compressionParams = new MatOfInt (Imgcodecs.IMWRITE_PNG_COMPRESSION, 0);
        #endif
        for (int i = 0; i < m_numPersons; ++i)
        {
            Imgcodecs.imwrite (Path.Combine (saveDirectoryPath, "preprocessedface" + i + "." + format), preprocessedFaces [m_latestFaces [i]], compressionParams);
        }
    } 
    else 
    {
        Debug.Log ("save failure. train data does not exist.");
    }
}

保存失败。火车数据不存在。
UnityEngine.Debug:Log(Object)
RealTimeFaceRecognitionExample.WebCamTextureRealTimeFaceRecognitionExample:OnSaveButtonClick()(在 Assets/RealTimeFaceRecognitionExample/WebCamTextureRealTimeFaceRecognitionExample/WebCamTextureRealTimeFaceRecognitionExample.cs:541)
UnityEngine.EventSystems.EventSystem:Update()

标签: unity3d

解决方案


扫描图像或人物后,您必须单击图像中的任意位置或被扫描人物的面部,以在保存前训练数据。


推荐阅读