/// <summary> /// Raises the change face mask button click event. /// </summary> public void OnChangeFaceMaskButtonClick() { RemoveFaceMask(); if (faceMaskDatas.Count == 0) { return; } FaceMaskData maskData = faceMaskDatas [faceMaskDataIndex]; faceMaskDataIndex = (faceMaskDataIndex < faceMaskDatas.Count - 1) ? faceMaskDataIndex + 1 : 0; if (maskData == null) { Debug.LogError("maskData == null"); return; } if (maskData.image == null) { Debug.LogError("image == null"); return; } if (maskData.landmarkPoints.Count != 68) { Debug.LogError("landmarkPoints.Count != 68"); return; } faceMaskTexture = maskData.image; faceMaskMat = new Mat(faceMaskTexture.height, faceMaskTexture.width, CvType.CV_8UC4); OpenCVForUnity.UnityUtils.Utils.texture2DToMat(faceMaskTexture, faceMaskMat); if (maskData.isDynamicMode) { faceRectInMask = DetectFace(faceMaskMat); faceLandmarkPointsInMask = DetectFaceLandmarkPoints(faceMaskMat, faceRectInMask); maskData.faceRect = faceRectInMask; maskData.landmarkPoints = faceLandmarkPointsInMask; } else { faceRectInMask = maskData.faceRect; faceLandmarkPointsInMask = maskData.landmarkPoints; } if (faceRectInMask.width == 0 && faceRectInMask.height == 0) { RemoveFaceMask(); Debug.LogError("A face could not be detected from the input image."); } enableColorCorrectionToggle.isOn = maskData.enableColorCorrection; }
/// <summary> /// Raises the change face mask button click event. /// </summary> public void OnChangeFaceMaskButtonClick() { RemoveFaceMask(); if (faceMaskDatas.Count == 0) { return; } FaceMaskData maskData = faceMaskDatas[faceMaskDataIndex]; faceMaskDataIndex = (faceMaskDataIndex < faceMaskDatas.Count - 1) ? faceMaskDataIndex + 1 : 0; if (maskData == null) { Debug.LogError("maskData == null"); return; } if (maskData.image == null) { Debug.LogError("image == null"); return; } if (maskData.landmarkPoints.Count != 68) { Debug.LogError("landmarkPoints.Count != 68"); return; } faceMaskTexture = maskData.image; faceMaskMat = new Mat(faceMaskTexture.height, faceMaskTexture.width, CvType.CV_8UC3); OpenCVForUnity.Utils.texture2DToMat(faceMaskTexture, faceMaskMat); if (maskData.isDynamicMode) { faceRectInMask = DetectFace(faceMaskMat); faceLandmarkPointsInMask = DetectFaceLandmarkPoints(faceMaskMat, faceRectInMask); maskData.faceRect = faceRectInMask; maskData.landmarkPoints = faceLandmarkPointsInMask; } else { faceRectInMask = maskData.faceRect; faceLandmarkPointsInMask = maskData.landmarkPoints; } if (faceRectInMask.width == 0 && faceRectInMask.height == 0) { RemoveFaceMask(); Debug.LogError("A face could not be detected from the input image."); } enableColorCorrectionToggle.isOn = maskData.enableColorCorrection; /* * DumpFaceRect (faceRectInMask); * DumpLandMarkPoints (faceLandmarkPointsInMask); */ /* * if (maskData.name == "Panda") { * UnityEngine.Rect faceRect; * List<Vector2> landmarkPoints; * CreatePandaMaskData (out faceRect, out landmarkPoints); * SetFaceMaskData (maskData, faceRect, landmarkPoints); * }else if (maskData.name == "Anime") { * UnityEngine.Rect faceRect; * List<Vector2> landmarkPoints; * CreateAnimeMaskData (out faceRect, out landmarkPoints); * SetFaceMaskData (maskData, faceRect, landmarkPoints); * } */ }