2011-10-17 7 views
3

의 픽셀에 접근이 코드 쓴 내가 잘못정팔 포체가하는 픽스

*** glibc detected *** ./deneme2346: free(): invalid next size (normal): 0x092c6fb0 *** 
    ======= Backtrace: ========= 
    /lib/i386-linux-gnu/libc.so.6(+0x6b961)[0xfad961] 
    /lib/i386-linux-gnu/libc.so.6(+0x6d28b)[0xfaf28b] 
    /lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0xfb241d] 
    /usr/local/lib/liblept.so.0(pixDestroy+0x6d)[0x67a1bbd] 
    ./deneme2346[0x80497ac] 
    ./deneme2346[0x80498a1] 
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0xf58e37] 
    ./deneme2346[0x80490b1] 

======= Memory map: ======== 
00110000-00151000 r-xp 00000000 08:06 2002695 /usr/lib/libhighgui.so.2.1.0 
00151000-00152000 r--p 00040000 08:06 2002695 /usr/lib/libhighgui.so.2.1.0 
.... 
some memory dump 
Aborted 

을,이 코드 만입니다 내 tesseract 사용의 테스트, 나는 Pix 픽셀 값을 OpenCV 예를 들어 다른 이미지 형식으로 변환 그들을 변경하고 싶습니다.

아무쪼록 감사드립니다.

답변

0

왜 단지에서 OpenCV에서 이미지를 시작하지, 다음이 이미지에 정팔 포체를 실행 않습니다

tesseract::TessBaseAPI tess; 
tess.Init(NULL, "eng"); 
tess.SetPageSegMode(tesseract::PSM_SINGLE_CHAR); 
Mat letter = imread("/path/to/image"); 

tess.SetImage((uchar*)letter.data, letter.size().width, 
       letter.size().height, letter.channels(), letter.step1()); 

tess.Recognize(0); 

char* output = tess.GetUTF8Text(); 
0

이 참조로 주로, PIX 데이터의 값에 액세스하는 데 사용할 수있는

/** 
* Get Pixel value at given point 
*/ 
l_uint32 pixAtGet(PIX* pix, int_t x, int_t y) 
{ 
    l_int32 wpl = pixGetWpl(pix); 
    l_uint32* data = pixGetData(pix); 
    l_uint32* line = data + y * wpl; 
    l_uint32 value = GET_DATA_BYTE(line, x); 
    return value; 
} 

그리고 PIX 값

/** 
* Set Pixel value at given point 
*/ 
void pixAtSet(PIX* pix, int_t x, int_t y, byte_t value) 
{ 
    l_int32 wpl  = pixGetWpl(pix); 
    l_uint32* data = pixGetData(pix); 
    l_uint32* line = data + y * wpl; 
    SET_DATA_BYTE(line, x, value); 
} 
을 설정하는
관련 문제