안녕하세요? 개발자를 꿈꾸는 학생입니다.
현재 영상 처리 관련 프로젝트를 진행 중인데 도저히 이해할 수 없는 결과가 나와서....
도움을 부탁드리려고 합니다.
간단한 소스 설명을 하자면 이중 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값은 다른 값이 출력이 됩니다.
왜 그럴까요??
허접한 제 소스와 글을 읽어주셔서 감사합니다. 그리고 부탁드립니다ㅠㅠ