게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
도저히 왜 다른지 이해할 수 없는 소스 질문드립니다...
게시물ID : programmer_10389짧은주소 복사하기
작성자 : 미중년
추천 : 0
조회수 : 603회
댓글수 : 14개
등록시간 : 2015/05/23 23:00:38
옵션
  • 본인삭제금지
안녕하세요? 개발자를 꿈꾸는 학생입니다.
 
현재 영상 처리 관련 프로젝트를 진행 중인데 도저히 이해할 수 없는 결과가 나와서....
 
도움을 부탁드리려고 합니다.
 
 
간단한 소스 설명을 하자면 이중 for문에서는 조건문에 맞는 좌표(x,y값)를 배열 edge_x와 edge_y 넣은 후 바로 출력을 한 것입니다.
 
밑의 for문은 위의 이중 for문이 끝난 후에 배열 edge_x와 edge_y를 출력한 것입니다.
 
당연히 이중 for문에서의 출력값과 밑의 두번째 for문에서의 출력값이 같아야 정상일 것이라고 생각하고 출력을 해봤습니다.
 
------------------------------------------------------------------------------------------------------------------------
unsigned char grayValue; // Canny Edge Detect 연산 결과 이미지에서 픽셀당 0~255 값.
int *edge_x = new int, *edge_y = new int; // 찾은 엣지 x,y좌표값
int idx = 0; // edge_x, edge_y의 인덱스 값
 
// 이중 for문
for(int x = innerShld_x_avg; x > (xy[0][0] * shoulder_x_coef) / 4; x--)
{
      // 어깨의 y축 범위
      for(int y = (xy[1][0] + 25) / 4; y < (xy[1][0] * 2) / 4; y++)
      {
            grayValue = CV_IMAGE_ELEM(cannyImage, unsigned char, y, x); // 1채널영상(gray 이미지)의 gray값(0~255 사이).
   
            if(grayValue > 240)
            {
                  edge_x[idx] = x;
                  edge_y[idx] = y;
                  printf("edge_x[%3d] : %d, edge_y[%3d] : %d\n", idx, edge_x[idx], idx, edge_y[idx]);
                  idx++;
                  break;
            }
      }
}
// 두번째 for문
for(int i = 0; i < 30; i++)
{
      printf("22222edge_x[%d] : %d, edge_y[%d] : %d\n", i, edge_x[i], i, edge_y[i]);
}
------------------------------------------------------------------------------------------------------------------------
 
 
 
위의 출력 결과는 이중 for문에서 배열에 값을 넣으면서 edge_x와 edge_y를 출력을 한 것이고, 이게 정상적인 결과값입니다.
밑의 출력 결과는 이중 for문이 끝난 후 밑의 두번째 for문에서 다시 한번 edge_x와 edge_y를 출력한 것으로 edge_y값이 정상적 이지않게 출력됩니다.
 
정말 이상하게도, edge_x값은 같은 값으로 제대로 출력이 되는데 edge_y값은 다른 값이 출력이 됩니다.
 
왜 그럴까요??
 
qqqqqqqqqqqqqqqqqqqqqq.jpg
 
 
허접한 제 소스와 글을 읽어주셔서 감사합니다. 그리고 부탁드립니다ㅠㅠ

 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호