예제 #1
0
 private int GetFaceExpressionIntensity(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression)
 {
     PXCMFaceData.ExpressionsData.FaceExpressionResult score;
     data.QueryExpression(faceExpression, out score);
     //if (score.intensity > 0) Debug.WriteLine(faceExpression + ":" +score.intensity);
     return(score.intensity);
 }
예제 #2
0
        public void DrawExpressions(PXCMFaceData.Face face)
        {
            Debug.Assert(face != null);
            if (m_bitmap == null || !Expressions.Checked)
            {
                return;
            }

            PXCMFaceData.ExpressionsData expressionsOutput = face.QueryExpressions();

            if (expressionsOutput == null)
            {
                return;
            }

            lock (m_bitmapLock)
            {
                using (Graphics graphics = Graphics.FromImage(m_bitmap))
                    using (var brush = new SolidBrush(m_faceTextOrganizer.Colour))
                    {
                        const int imageSizeWidth  = 18;
                        const int imageSizeHeight = 18;

                        int positionX     = m_faceTextOrganizer.ExpressionsLocation.X;
                        int positionXText = positionX + imageSizeWidth;
                        int positionY     = m_faceTextOrganizer.ExpressionsLocation.Y;
                        int positionYText = positionY + imageSizeHeight / 4;

                        foreach (var expressionEntry in m_expressionDictionary)
                        {
                            PXCMFaceData.ExpressionsData.FaceExpression       expression = expressionEntry.Key;
                            PXCMFaceData.ExpressionsData.FaceExpressionResult result;
                            bool status = expressionsOutput.QueryExpression(expression, out result);
                            if (!status)
                            {
                                continue;
                            }

                            Bitmap cachedExpressionBitmap;
                            bool   hasCachedExpressionBitmap = m_cachedExpressions.TryGetValue(expression, out cachedExpressionBitmap);
                            if (!hasCachedExpressionBitmap)
                            {
                                cachedExpressionBitmap = (Bitmap)m_resources.GetObject(expressionEntry.Value);
                                m_cachedExpressions.Add(expression, cachedExpressionBitmap);
                            }

                            using (var font = new Font(FontFamily.GenericMonospace, m_faceTextOrganizer.FontSize, FontStyle.Bold))
                            {
                                Debug.Assert(cachedExpressionBitmap != null, "cachedExpressionBitmap != null");
                                graphics.DrawImage(cachedExpressionBitmap, new Rectangle(positionX, positionY, imageSizeWidth, imageSizeHeight));
                                var expressionText = String.Format("= {0}", result.intensity);
                                graphics.DrawString(expressionText, font, brush, positionXText, positionYText);

                                positionY     += imageSizeHeight;
                                positionYText += imageSizeHeight;
                            }
                        }
                    }
            }
        }
예제 #3
0
        public void DrawExpressions(PXCMFaceData.Face face)
        {
            Debug.Assert(face != null);
            // 映像がNULL または 表情認識チェックがOFFの場合処理を終了
            if (m_bitmap == null)
            {
                return;
            }

            // パラメータ取得
            PXCMFaceData.ExpressionsData expressionsOutput = face.QueryExpressions();
            // 値を正しく取得出来なかった場合処理を終了
            if (expressionsOutput == null)
            {
                return;
            }

            lock (m_bitmapLock)
            {
                using (var brush = new SolidBrush(m_faceTextOrganizer.Colour))
                {
                    const int imageSizeWidth  = 18;
                    const int imageSizeHeight = 18;

                    /* 座標 */
                    int positionX     = m_faceTextOrganizer.ExpressionsLocation.X;
                    int positionXText = positionX + imageSizeWidth;
                    int positionY     = m_faceTextOrganizer.ExpressionsLocation.Y;
                    int positionYText = positionY + imageSizeHeight / 4;

                    foreach (var expressionEntry in m_expressionDictionary)
                    {
                        PXCMFaceData.ExpressionsData.FaceExpression       expression = expressionEntry.Key;
                        PXCMFaceData.ExpressionsData.FaceExpressionResult result;
                        bool status = expressionsOutput.QueryExpression(expression, out result);
                        if (!status)
                        {
                            continue;
                        }
                        //Console.WriteLine("えくすぷれっしょん" + expression);

                        using (var font = new Font(FontFamily.GenericMonospace, m_faceTextOrganizer.FontSize, FontStyle.Bold))
                        {
                            var expressionText = String.Format("= {0}", result.intensity);
                            //graphics.DrawString(expressionText, font, brush, positionXText, positionYText);
                            //間隔をあける
                            smileCnt++;
                            if (smileCnt > smileN)
                            {
                                smileCnt = 0;
                                //smileである時に処理をする
                                if (expression.ToString() == "EXPRESSION_SMILE")
                                {
                                    satisfaction = result.intensity;
                                    RunExpression();
                                }
                            }
                            positionY     += imageSizeHeight;
                            positionYText += imageSizeHeight;
                        }
                    }
                }
            }
        }
예제 #4
0
 public void DisplayExpression(PXCMFaceData.ExpressionsData.FaceExpressionResult expressionResult, PXCMFaceData.ExpressionsData.FaceExpression faceExpression)
 {
     ExpressionGUIText.GetComponent <TextMesh> ().text = faceExpression.ToString() + "\n" + expressionResult.intensity.ToString();
 }
 private int GetFaceExpressionIntensity(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression)
 {
     PXCMFaceData.ExpressionsData.FaceExpressionResult score;
     data.QueryExpression(faceExpression, out score);
     return(score.intensity);
 }
 private bool CheckFaceExpression(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression, int threshold)
 {
     return(GetFaceExpressionIntensity(data, faceExpression) > threshold);
 }
 /*
  *  @brief Checks if expression is currently enabled in configuration.
  *  @param[in] expression - single face expression
  *  @return true - enabled, false - disabled.
  */
 public Boolean IsExpressionEnabled(PXCMFaceData.ExpressionsData.FaceExpression expression)
 {
     return(PXCMFaceConfiguration_ExpressionsConfiguration_IsExpressionEnabled(instance.configs.expressionInstance, expression));
 }
 /*
  *  @brief Disables specific expression.
  *  @param[in] expression - single face expression.
  */
 public void DisableExpression(PXCMFaceData.ExpressionsData.FaceExpression expression)
 {
     PXCMFaceConfiguration_ExpressionsConfiguration_DisableExpression(instance.configs.expressionInstance, expression);
 }
 /*
  *  @brief Enables specific expression.
  *  @param[in] expression - single face expression.
  *  @return PXCM_STATUS_NO_ERROR - success.
  *  PXCM_STATUS_PARAM_UNSUPPORTED - expression is unsupported.
  */
 public pxcmStatus EnableExpression(PXCMFaceData.ExpressionsData.FaceExpression expression)
 {
     return(PXCMFaceConfiguration_ExpressionsConfiguration_EnableExpression(instance.configs.expressionInstance, expression));
 }
예제 #10
0
 internal static extern Boolean PXCMFaceConfiguration_ExpressionsConfiguration_IsExpressionEnabled(IntPtr instance, PXCMFaceData.ExpressionsData.FaceExpression expression);
예제 #11
0
 internal static extern void PXCMFaceConfiguration_ExpressionsConfiguration_DisableExpression(IntPtr instsance, PXCMFaceData.ExpressionsData.FaceExpression expression);
예제 #12
0
 internal static extern pxcmStatus PXCMFaceConfiguration_ExpressionsConfiguration_EnableExpression(IntPtr instance, PXCMFaceData.ExpressionsData.FaceExpression expression);
예제 #13
0
 private int GetFaceExpressionIntensity(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression)
 {
     PXCMFaceData.ExpressionsData.FaceExpressionResult score;
     data.QueryExpression(faceExpression, out score);
     //if (score.intensity > 0) Debug.WriteLine(faceExpression + ":" +score.intensity);
     return score.intensity;
 }
예제 #14
0
 private bool CheckFaceExpression(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression, int threshold)
 {
     return GetFaceExpressionIntensity(data, faceExpression) > threshold;
 }
 private int GetFaceExpressionIntensity(PXCMFaceData.ExpressionsData data, FaceExpression faceExpression) {
     PXCMFaceData.ExpressionsData.FaceExpressionResult score;
     data.QueryExpression(faceExpression, out score);
     return score.intensity;
 }
예제 #16
0
        public static string GetName(this PXCMFaceData.ExpressionsData.FaceExpression expression)
        {
            var pieces = expression.ToString().Split('_');

            return(string.Join(" ", pieces.Skip(1).Select(p => p.ToLower())));
        }