2009. 10. 26. 05:07
이미지도 0~255 까지라 BYTE고 mask도 BYTE로 하고 계속 코딩해나갔다.
BYTE Ymask[9] = { 1, 2, 1,
                             0, 0, 0,
                          -1, -2, -1};

실제 문제는

product.correlation(3, 3, Xmask, MyImg.getX(), MyImg.getY(),
                            MyImg.getImg2DPointer(), XSobel.getImg2DPointer());

여기서 터졌다.

for (int j=0; j < _iy; j++)
 {  
  for(int i=0; i< _ix; i++)
  {   
   int temp = 0;
   int idx = 0;
   for(int b=-py; b <= py; b++)
   {
    for(int a=-px; a <= px; a++)
    {  
     int hi = static_cast<int>(getV(j +b, i + a));
     int m = _mask[idx];
     temp += static_cast<int>(getV(j + b , i + a ) * _mask[idx++]);
    }
   }
   _after[j][i] = static_cast<BYTE>(temp);
  }
 }

무려 4중 for문.

코드를 보면 머 알겠냐? 로직은 문제 없는것 같고, 디버깅하다 하다 (딴대를 삽질 했음)

결국 보조 변수를 두고 보니. mask 값이 이상한것이다.

"어? warn L4에선 저런거 다 잡아 주는데?"

실제로 확인하니 언제 내가 바꾼건지. L3로 바껴져 있엇다.

오늘의 교훈:

C 시간에 int 자료형 크기 외운 프로그래머 심정을 알것다.

L4가 진리
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\mycvdoc.cpp(231) : warning C4245: '초기화 중' : 'int'에서 'BYTE'(으)로의 변환입니다. signed 또는 unsigned가 일치하지 않습니다.
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\mycvdoc.cpp(231) : warning C4245: '초기화 중' : 'int'에서 'BYTE'(으)로의 변환입니다. signed 또는 unsigned가 일치하지 않습니다.
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\mycvdoc.cpp(231) : warning C4245: '초기화 중' : 'int'에서 'BYTE'(으)로의 변환입니다. signed 또는 unsigned가 일치하지 않습니다.

그 1억짜리 코드 체크기 안살꺼면 L4하고 ms 코드 체커기 돌려 (따른거 없나?)

결과: 열심히 삽질중. 쓸만한건 못건져
1>C/C++ 코드 분석을 실행하고 있습니다...
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cfourier.cpp(111) : warning C6211: 예외로 인해 'pSpectrum' 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.: Lines: 105, 107, 109, 111, 112, 114
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cfourier.cpp(167) : warning C6211: 예외로 인해 'pPhase' 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.: Lines: 157, 159, 161, 167, 168, 170
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cfourier.cpp(388) : warning C6211: 예외로 인해 'tr' 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.: Lines: 386, 388, 389
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\quantizelevel2.cpp(59) : warning C6246: 'nPos'의 지역 선언이 외부 범위에 있는 같은 이름의 선언을 숨깁니다. 자세한 내용은 줄 '54'('c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\quantizelevel2.cpp')에 있는 이전 선언을 참조하십시오.: Lines: 54
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\dib.cpp(690) : warning C6011: NULL 포인터 'lpbi'을(를) 역참조하고 있습니다.: Lines: 667, 668, 669, 672, 675, 678, 679, 686, 687, 689, 690
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(132) : warning C6211: 예외로 인해 '_Re' 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.: Lines: 128, 132, 133
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(333) : warning C6001: 초기화되지 않은 메모리 'y'을(를) 사용하고 있습니다.: Lines: 308, 310, 312, 314, 326, 328, 329, 333
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(334) : warning C6001: 초기화되지 않은 메모리 'x'을(를) 사용하고 있습니다.: Lines: 308, 310, 312, 314, 326, 328, 329, 333, 334
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(336) : warning C6001: 초기화되지 않은 메모리 'w'을(를) 사용하고 있습니다.: Lines: 308, 310, 312, 314, 326, 328, 329, 333, 334, 333, 334, 333, 334, 336
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(369) : warning C6211: 예외로 인해 '_tempIm' 메모리 누수가 발생하고 있습니다. 로컬 catch 블록을 사용하여 메모리를 정리하십시오.: Lines: 367, 369, 370
1>코드를 생성하고 있습니다...
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(337) : warning C4701: 초기화되지 않았을 수 있는 'w' 지역 변수를 사용했습니다.
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(334) : warning C4701: 초기화되지 않았을 수 있는 'x' 지역 변수를 사용했습니다.
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(333) : warning C4701: 초기화되지 않았을 수 있는 'y' 지역 변수를 사용했습니다.
1>c:\documents and settings\newpolaris\my documents\visual studio 2008\projects\mycv\mycv\cmyfourier.cpp(337) : warning C4701: 초기화되지 않았을 수 있는 'z' 지역 변수를 사용했습니다.
1>빌드 로그가 "file://c:\Documents and Settings\newpolaris\My Documents\Visual Studio 2008\Projects\myCV\myCV\Debug\BuildLog.htm"에 저장되었습니다.














 
Posted by newpolaris