//내가 opencv를 사용해서 수화번역을 하는데 지금 거의 마지막 단계에서 헤매고 있는데 먼저 수화영상의 손모양 정보(수화동영상)를 통해 글자로 표현하는건데 이 소스를 어캐 실행시키는게 좋을까...

#include "custom.h"


/*

CvPoint center;

CvPoint far_distance;

CvPoint first;

CvPoint second;

CvPoint third;

*/


//동영상 내용인 '감사합니다' 를 해석해야함

extern CvPoint center;

extern CvPoint far_distance;

extern CvPoint first;

extern CvPoint second;

extern CvPoint third;

extern CvPoint forth;

extern IplImage* image0;

int timer = 40;



void translate()

{

   //변수 초기화

   double x[4], y[4];

   double distance[4], angle[4];

   double under[4], upper[4], div[4];

   for (int i = 0; i

   {

      distance[i] = 0.0;

      angle[i] = 0.0;

      x[i] = 0.0;

      y[i] = 0.0;

      under[i] = 0.0;

      upper[i] = 0.0;

      div[i] = 0.0;

   }


   //각 점의 거리와 각도 구하는 소스

   distance[0] = sqrt((double)((center.x - first.x) * (center.x - first.x)

      + (center.y - first.y) * (center.y - first.y)));


   distance[1] = sqrt((double)((center.x - second.x) * (center.x - second.x)

      + (center.y - second.y) * (center.y - second.y)));


   distance[2] = sqrt((double)((center.x - third.x) * (center.x - third.x)

      + (center.y - third.y) * (center.y - third.y)));


   distance[3] = sqrt((double)((center.x - forth.x) * (center.x - forth.x)

      + (center.y - forth.y) * (center.y - forth.y)));

   //거리 끝


   //center 점을 원점으로 정한후 각점 좌표 이동.

   x[0] = first.x - center.x;   y[0] = first.y - center.y;

   x[1] = second.x - center.x;   y[1] = second.y - center.y;

   x[2] = third.x - center.x;   y[2] = third.y - center.y;

   x[3] = forth.x - center.x;   y[3] = forth.y - center.y;



   if (timer <= 0)

   {

      for (int j = 0; j

      {

         under[j] = distance[0] * distance[j];

         upper[j] = (x[0] * x[j]) + (y[0] * y[j]);


         div[j] = upper[j] / under[j];


         angle[j] = acos(div[j]) * 57.2958; //라디안을 도(degree)로 변환

         //printf("angle %lf\n"s,angle[i]);

      }

      //값 출력

      for (int m = 0; m

         printf("distance : %f, angle : %f\n", distance[m], angle[m]);


      printf("\n");

      timer = 52;


   }

   else timer--;


   ////ㄱ 해석

   if (distance[0] > 150 && distance[0]

      if (distance[1] > 96 && distance[1]

         if (distance[2] > 175 && distance[2]

            if (distance[3] > 119 && distance[3]

               if (angle[1] > 171 && angle[1]

                  if (angle[2] > 142 && angle[2]

                     if (angle[3] > 79 && angle[3]

                        printf("ㄱ");


   ////ㅏ 해석

   if (distance[0] > 77 && distance[0]

      if (distance[1] > 149 && distance[1]

         if (distance[2] > 258 && distance[2]

            if (distance[3] > 40 && distance[3]

               if (angle[1] > 114 && angle[1]

                  if (angle[2] > 64 && angle[2]

                     if (angle[3] > 143 && angle[3]

                        printf("ㅏ");

   ////ㅁ 해석

   if (distance[0] > 94 && distance[0]

      if (distance[1] > 115 && distance[1]

         if (distance[2] > 248 && distance[2]

            if (distance[3] > 34 && distance[3]

               if (angle[1] > 121 && angle[1]

                  if (angle[2] > 56 && angle[2]

                     if (angle[3] > 117 && angle[3]

                        printf("ㅁ");


   ////ㅅ 해석

   if (distance[0] > 160 && distance[0]

      if (distance[1] > 74 && distance[1]

         if (distance[2] > 160 && distance[2]

            if (distance[3] > 140 && distance[3]

               if (angle[1] > 166 && angle[1]

                  if (angle[2] > 0 && angle[2]

                     if (angle[3] > 64 && angle[3]

                        printf("ㅅ");

   ////ㅎ 해석

   if (distance[0] > 66 && distance[0]

      if (distance[1] > 129 && distance[1]

         if (distance[2] > 201 && distance[2]

            if (distance[3] > 93 && distance[3]

               if (angle[1] > 162 && angle[1]

                  if (angle[2] > 71 && angle[2]

                     if (angle[3] > 131 && angle[3]

                        printf("ㅎ");

   ////ㅂ 해석

   if (distance[0] > 82 && distance[0]

      if (distance[1] > 204 && distance[1]

         if (distance[2] > 106 && distance[2]

            if (distance[3] > 127 && distance[3]

               if (angle[1] > 171 && angle[1]

                  if (angle[2] > 33 && angle[2]

                     if (angle[3] > 99 && angle[3]

                        printf("ㅂ");

   ////ㄴ 해석

   if (distance[0] > 174 && distance[0]

      if (distance[1] > 67 && distance[1]

         if (distance[2] > 176 && distance[2]

            if (distance[3] > 119 && distance[3]

               if (angle[1] > 157 && angle[1]

                  if (angle[2] > 1 && angle[2]

                     if (angle[3] > 81 && angle[3]

                        printf("ㄴ");

   ////ㄷ 해석

   if (distance[0] > 88 && distance[0]

      if (distance[1] > 171 && distance[1]

         if (distance[2] > 185 && distance[2]

            if (distance[3] > 163 && distance[3]

               if (angle[1] > 170 && angle[1]

                  if (angle[2] > 60 && angle[2]

                     if (angle[3] > 158 && angle[3]

                        printf("ㄷ");


}