2012-11-19 3 views
0

안녕 얘들 아 나는 런타임 오류가 있고 잘못된 숫자 입력으로 어쩌면 무엇인가 몰라? 나는 약간의 도움을 청할 것이라고 생각했다.쌍곡선 최종 확률 밀도 함수 Opencv

어쩌면 무엇인가가 t[x]=gmin*pow(gmax/gmin, factor);에있다.

void image::hhyper(const char* path) 
{ 
    IplImage* img = cvLoadImage(path); 
    IplImage* out = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3); 

    h = img->height; 
    w = img->width; 
    step = img->widthStep; 
    channels = img->nChannels; 
    data = (uchar *)img->imageData; 
    newdata = (uchar *)out->imageData; 

    int gmin=20; 
    int gmax=200; 

    double sum=0; 
    double t[256]; 
    double factor; 

    for(int a=0; a<h; a++){ 
     for(int b=0; b<w; b++){ 
      for(int k=0; k<3; k++){ 
       newdata[i*step+j*channels+k]=data[i*step+j*channels+k]; 
      } 
     } 
    } 

    for(int x=0; x<256; x++){ 
     sum+=table[x]; 
     factor=sum/(h*w); 
     t[x]=gmin*pow(gmax/gmin, factor); 
    } 

    for(int a=0; a<h; a++){ 
     for(int b=0; b<w; b++){ 
      for(int k=0; k<3; k++){ 
       newdata[i*step+j*channels+k]=t[(int)data[i*step+j*channels+k]]; 
     } 
     } 
    } 

    cvNamedWindow("out"); 
    cvNamedWindow("in"); 
    cvShowImage("in",img); 
    cvShowImage("out",out); 
    system("pause"); 
} 

여기 내 헤더

class image 
{ 
public: 
image(); 
const char* path; 
void hhyper(const char*); 
void histo(const char*); 
IplImage* DrawHistogram(CvHistogram *hist, float scaleX, float scaleY); 
int h,w,step,channels,i,j,; 
int table[256]; 
uchar *data, *newdata; 
+0

해야입니까? –

+0

런타임 오류 :/ – RedFox

+0

배열이 너무 큽니까? 어떤 아이디어 야? – RedFox

답변

0

어쩌면이

newdata[i*step+j*channels+k] = t[(int)data[i*step+j*channels+k]]; 

오류가 당신이 얻고있는 무슨

newdata[i*step+j*channels+k] = t[(uchar)data[i*step+j*channels+k]]; 
+0

흠 아니 결과를 변경하지 마십시오 :/ – RedFox

+0

확인 솔루션 그냥 몇 가지 기호를 변경했다 ... 비록 당신의 도움을 주셔서 감사합니다 – RedFox