錯誤訊息 ( Assertion failed: ............ .... ....line 514) |
尚未結案
|
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
我想請問各位大大編譯的時候發生這種錯誤訊息是什麼原因呢??
Assertion failed: !se->fixups||((char*)se->fixups->locAddr[0]-startSym->addr) 0x00800000<0x01000000, file c:\src\ilink\exemaker.c,line 514 只不過是把 全域變數 做個變動而已就無法編繹了(無法刪除也無法移動......) double R[w][h]={0.0},G[w][h]={0.0},B[w][h]={0.0},buffg[w][h]={0.0},buff[w][h]={0.0},buffh[w][h]={0.0} ,buffs[w][h]={0.0},buffi[w][h]={0.0},V[256]={0.0}; 原文 刪除double soble[w][h]={0.0} 全域變數後就無法使用了 當然我有把 void Soble () 裡面用其他的 buff 代替 但是我就是搞不懂位啥會這樣呢? [code cpp] //--------------------------------------------------------------------------- #include #include <math.h><br />#include #include #include #include #include #include #pragma hdrstop #include "jpeg.hpp" #include "Unit1.h" #pragma package(smart_init) #pragma link "trayicon" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define ed StrToFloat(Form1->Edit1->Text) TForm1 *Form1; const int w=423,h=384,maskvl=3; //set map height & width int i=0,j=0; long color; TJPEGImage *TheJPEG; double R[w][h]={0.0},G[w][h]={0.0},B[w][h]={0.0},r[w][h]={0.0},g[w][h]={0.0},b[w][h]={0.0}, buffg[w][h]={0.0},buffb[w][h]={0.0},soble[w][h]={0.0},buffh[w][h]={0.0},buffs[w][h]={0.0}, buffi[w][h]={0.0},V[256]={0.0}; float pi=3.14159265358979 ; const int Gx[3][3] ={{-1,0 ,1 }, {-2,0 ,2 }, {-1,0 ,1}}, Gy[3][3] ={{-1,-2,-1}, {0 ,0 ,0 }, {1 ,2 ,1 }}; //---------------------------------------------------------------------------- class Enhancement{ public: void NormHist(double n[w][h]) { double move=0.0,vv=0; int x=0; for(i=0;i<256;i ) { V[i]=0; } for(j=0;j for(i=0;i vv=n[i][j]; V[(int)vv] ; } } for(i=1;i<256;i ) { move=V[i-1]; V[i] =move; } for(i=1;i<256;i ) { V[i]=(V[i]/(h*w))*255; } for(i=0;i<256;i ) { x=(int)(V[i]); if(( (V[i])-((double)x)) >= 0.5) { V[i]=(x 1); } else { V[i]=x; } } for(j=0;j for(i=0;i buffg[i][j]=V[(int)(buffg[i][j])]; } } } }; //---------------------------------------------------------------------------- class detect{ int mw,mh,v; public: //*********************Soble*************************// void Soble () { double W=0.0,H=0.0; for(i=0;i<(h-maskvl);i ) { for(j=0;j<(w-maskvl);j ) { W=H=0; for(mh=i;mh<(i maskvl);mh ) { for(mw=j;mw<(j maskvl);mw ) { W =(Gx[mw-j][mh-i]*buffg[mw][mh]); H =(Gy[mw-j][mh-i]*buffg[mw][mh]); } } soble[j 1][i 1]=(((W*W H*H)>52000*StrToFloat(Form1->Edit2->Text))?(0):(255)); } } for(i=0;i<(h-maskvl);i ) { for(j=0;j<(w-maskvl);j ) { buffg[j][i]=soble[j][i]; } } } //***********************End*************************// } ; //---------------------------------------------------------------------------- class filter{ int mw,mh,v; public: //**********************Median***********************// void Median (double m[w][h]) { int str[maskvl*maskvl]={0},move=0; for(i=0;i<=(h-maskvl);i ) { for(j=0;j<=(w-maskvl);j ) { v=0; for(mh=i;mh<(i maskvl);mh ) { for(mw=j;mw<(j maskvl);mw ) { str[v]=m[mw][mh]; v ; } } for(int L=0;L<(maskvl*maskvl);L ) { for(int P=0;P<(maskvl*maskvl);P ) { if(str[P] move=str[P]; str[P]=str[P 1]; str[P 1]=str[P]; } } } buffg[j 1][i 1]=str[(int)(maskvl*maskvl/2)]; } } } } ; //--------------------------------------------------------------------------- class ColorSpace { double minv,vv; byte rr,gg,bb; public: //*******************************RGB2HSI2RGB************************************// void RHR() { for(j=0;j for(i=0;i minv=(R[i][j]<=G[i][j])?R[i][j]:G[i][j]; minv=(minv<=B[i][j])?minv:B[i][j]; if( (R[i][j]==G[i][j]) && (G[i][j]==B[i][j]) ) { buffh[i][j]=0.0; buffi[i][j]=R[i][j]; buffs[i][j]=0.0; } else { buffi[i][j]=(R[i][j] G[i][j] B[i][j])/3.0; buffs[i][j]=1-(3.0/(R[i][j] G[i][j] B[i][j]))*(minv); vv = 0.5*((R[i][j]-G[i][j]) (R[i][j]-B[i][j]))/sqrt((R[i][j]-G[i][j])*(R[i][j]-G[i][j]) (R[i][j]-B[i][j])*(G[i][j]-B[i][j])) ; if(B[i][j]<=G[i][j]) { buffh[i][j]=acos(vv); } else { buffh[i][j]=2*pi-acos(vv); } } } } for(j=0;j for(i=0;i buffi[i][j]=buffi[i][j]*ed*(0.99); if( ((0.0)<=buffh[i][j]) && (buffh[i][j]<(pi*2/3)) ) { rr=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]))/(cos(pi/3-buffh[i][j]))); bb=(buffi[i][j])*(1-buffs[i][j]); gg=3*(buffi[i][j])-(rr bb); } else if( ((pi*2/3)<=buffh[i][j]) && (buffh[i][j]<(4*pi/3)) ) { rr=(buffi[i][j])*(1-buffs[i][j]); gg=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]-(pi*2/3)))/(cos(pi-buffh[i][j]))) ; bb=3*(buffi[i][j])-(rr gg); } else if( ((4*pi/3)<=buffh[i][j]) && (buffh[i][j]<=(2*pi)) ) { gg=(buffi[i][j])*(1-buffs[i][j]); bb=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]-(4*pi/3)))/(cos((5*pi/3)-buffh[i][j]))) ; rr=3*(buffi[i][j])-(gg bb); } //R R[i][j]=rr; //G G[i][j]=gg; //B B[i][j]=bb; } } } //*********************************End************************************// }; Enhancement enhancement; detect Detect; filter mask; ColorSpace change; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::BMP1Click(TObject *Sender) { Edit1->Text="1.0"; OpenPictureDialog1->FilterIndex=2; if(Form1->OpenPictureDialog1->Execute()) { Form1->Image1->Picture->LoadFromFile(Form1->OpenPictureDialog1->FileName); for(j=0;j for(i=0;i color=Form1->Image1->Picture->Bitmap->Canvas->Pixels[i][j]; R[i][j]=GetRValue(color); G[i][j]=GetGValue(color); B[i][j]=GetBValue(color); } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::JPEG1Click(TObject *Sender) { Edit1->Text="1.0"; OpenPictureDialog1->FilterIndex=1; if(Form1->OpenPictureDialog1->Execute()) { TheJPEG = new TJPEGImage; TheJPEG->LoadFromFile(Form1->OpenPictureDialog1->FileName); Form1->Image1->Picture->Bitmap->Assign(TheJPEG); for(j=0;j for(i=0;i color=Form1->Image1->Picture->Bitmap->Canvas->Pixels[i][j]; R[i][j]=GetRValue(color); G[i][j]=GetGValue(color); B[i][j]=GetBValue(color); buffg[i][j]=R[i][j]; } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::N4Click(TObject *Sender) { Series1->Clear(); for(j=0;j for(i=0;i buffg[i][j]= R[i][j]*0.299 G[i][j]*0.587 B[i][j]*0.114; Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series1->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::N5Click(TObject *Sender) { for(j=0;j for(i=0;i if( buffg[i][j] < 128 ) { buffg[i][j]= TColor(RGB(0,0,0)); } else if( buffg[i][j] >= 128 ) { buffg[i][j]= TColor(RGB(255,255,255)); } Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::NormalizedHistogram1Click(TObject *Sender) { Series2->Clear(); enhancement.NormHist(buffg); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series2->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Medianfilter1Click(TObject *Sender) { Series2->Clear(); mask.Median(buffg); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series2->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Sobleedgedetect1Click(TObject *Sender) { Detect.Soble(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::N6Click(TObject *Sender) { if(Form1->SavePictureDialog1->Execute()) { if(Form1->SavePictureDialog1->FilterIndex==1) //JPEG { TheJPEG = new TJPEGImage; TheJPEG->Assign(Image2->Picture->Bitmap); TheJPEG->SaveToFile(Form1->SavePictureDialog1->FileName); } else if(Form1->SavePictureDialog1->FilterIndex==2) //BMP { Form1->Image2->Picture->SaveToFile(Form1->SavePictureDialog1->FileName); } } } //--------------------------------------------------------------------------- //TCustomChart void __fastcall TForm1::Luminositychange1Click(TObject *Sender) { change.RHR(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(R[i][j],G[i][j],B[i][j])); } } } //--------------------------------------------------------------------------- [/code] 改過後 [code cpp] //--------------------------------------------------------------------------- #include #include <math.h><br />#include #include #include #include #include #include #pragma hdrstop #include "jpeg.hpp" #include "Unit1.h" #pragma package(smart_init) #pragma link "trayicon" #pragma resource "*.dfm" #define EdRHR StrToFloat(Form1->Edit1->Text) #define Edsoble StrToFloat(Form1->Edit2->Text) /*---------------------------------------------------------------------------*/ using namespace std; TForm1 *Form1; TJPEGImage *TheJPEG; const int Edmask=StrToInt(Form1->Edit3->Text); const int w=423,h=384,maskvl=3; //set map height & width int i=0,j=0; long color; double R[w][h]={0.0},G[w][h]={0.0},B[w][h]={0.0},buffg[w][h]={0.0},buff[w][h]={0.0}, buffh[w][h]={0.0},buffs[w][h]={0.0},buffi[w][h]={0.0},V[256]={0.0}; float pi=3.14159265358979 ; const int Gx[3][3] ={{-1,0 ,1 }, {-2,0 ,2 }, {-1,0 ,1}}, Gy[3][3] ={{-1,-2,-1}, {0 ,0 ,0 }, {1 ,2 ,1 }}; /*----------------------------------------------------------------------------*/ class Enhancement{ public: void NormHist() { double move=0.0,vv=0; int x=0; for(i=0;i<256;i ) { V[i]=0; } for(j=0;j for(i=0;i vv=buffg[i][j]; V[(int)vv] ; } } for(i=1;i<256;i ) { move=V[i-1]; V[i] =move; } for(i=1;i<256;i ) { V[i]=(V[i]/(h*w))*255; } for(i=0;i<256;i ) { x=(int)(V[i]); if(( (V[i])-((double)x)) >= 0.5) { V[i]=(x 1); } else { V[i]=x; } } for(j=0;j for(i=0;i buffg[i][j]=V[(int)(buffg[i][j])]; } } } }; //---------------------------------------------------------------------------- class detect{ int mw,mh,v; public: //*********************Soble*************************// void Soble () { double W=0.0,H=0.0; for(i=0;i<(h-maskvl);i ) { for(j=0;j<(w-maskvl);j ) { W=H=0; for(mh=i;mh<(i maskvl);mh ) { for(mw=j;mw<(j maskvl);mw ) { W =(Gx[mw-j][mh-i]*buffg[mw][mh]); H =(Gy[mw-j][mh-i]*buffg[mw][mh]); } } buffg[j][i]=(((W*W H*H)>52000*Edsoble)?(0):(255)); } } } //***********************End*************************// } ; //---------------------------------------------------------------------------- class filter{ int mw,mh,v; public: //**********************Median***********************// void Median () { double move=0,str[4]={0}; for(i=0;i<=(h-3);i ) { for(j=0;j<=(w-3);j ) { v=0; for(mh=i;mh<(i 3);mh ) { for(mw=j;mw<(j 3);mw ) { str[v]=buffg[mw][mh]; v ; } } for(int L=0;L<(3*3);L ) { for(int P=0;P<(3*3);P ) { if(str[P] move=str[P]; str[P]=str[P 1]; str[P 1]=str[P]; } } } buffg[j ((int)3/2)][i ((int)3/2)]=str[(int)(3*3/2)]; } } } } ; //--------------------------------------------------------------------------- class ColorSpace { double minv,vv; byte rr,gg,bb; public: //*******************************RGB2HSI2RGB************************************// void RHR() { for(j=0;j for(i=0;i minv=(R[i][j]<=G[i][j])?R[i][j]:G[i][j]; minv=(minv<=B[i][j])?minv:B[i][j]; if( (R[i][j]==G[i][j]) && (G[i][j]==B[i][j]) ) { buffh[i][j]=0.0; buffi[i][j]=R[i][j]; buffs[i][j]=0.0; } else { buffi[i][j]=(R[i][j] G[i][j] B[i][j])/3.0; buffs[i][j]=1-(3.0/(R[i][j] G[i][j] B[i][j]))*(minv); vv = 0.5*((R[i][j]-G[i][j]) (R[i][j]-B[i][j]))/sqrt((R[i][j]-G[i][j])*(R[i][j]-G[i][j]) (R[i][j]-B[i][j])*(G[i][j]-B[i][j])) ; if(B[i][j]<=G[i][j]) { buffh[i][j]=acos(vv); } else { buffh[i][j]=2*pi-acos(vv); } } } } for(j=0;j for(i=0;i buffi[i][j]=buffi[i][j]*(EdRHR)*(0.99); if( ((0.0)<=buffh[i][j]) && (buffh[i][j]<(pi*2/3)) ) { rr=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]))/(cos(pi/3-buffh[i][j]))); bb=(buffi[i][j])*(1-buffs[i][j]); gg=3*(buffi[i][j])-(rr bb); } else if( ((pi*2/3)<=buffh[i][j]) && (buffh[i][j]<(4*pi/3)) ) { rr=(buffi[i][j])*(1-buffs[i][j]); gg=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]-(pi*2/3)))/(cos(pi-buffh[i][j]))) ; bb=3*(buffi[i][j])-(rr gg); } else if( ((4*pi/3)<=buffh[i][j]) && (buffh[i][j]<=(2*pi)) ) { gg=(buffi[i][j])*(1-buffs[i][j]); bb=(buffi[i][j])*(1 (buffs[i][j]*cos(buffh[i][j]-(4*pi/3)))/(cos((5*pi/3)-buffh[i][j]))) ; rr=3*(buffi[i][j])-(gg bb); } //R R[i][j]=rr; //G G[i][j]=gg; //B B[i][j]=bb; } } } //*********************************End************************************// }; Enhancement enhancement; detect Detect; filter mask; ColorSpace change; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::BMP1Click(TObject *Sender) { Edit1->Text="1.0"; OpenPictureDialog1->FilterIndex=2; if(Form1->OpenPictureDialog1->Execute()) { Form1->Image1->Picture->LoadFromFile(Form1->OpenPictureDialog1->FileName); for(j=0;j for(i=0;i color=Form1->Image1->Picture->Bitmap->Canvas->Pixels[i][j]; R[i][j]=GetRValue(color); G[i][j]=GetGValue(color); B[i][j]=GetBValue(color); buffg[i][j]=R[i][j]; } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::JPEG1Click(TObject *Sender) { Edit1->Text="1.0"; OpenPictureDialog1->FilterIndex=1; if(Form1->OpenPictureDialog1->Execute()) { TheJPEG = new TJPEGImage; TheJPEG->LoadFromFile(Form1->OpenPictureDialog1->FileName); Form1->Image1->Picture->Bitmap->Assign(TheJPEG); for(j=0;j for(i=0;i color=Form1->Image1->Picture->Bitmap->Canvas->Pixels[i][j]; R[i][j]=GetRValue(color); G[i][j]=GetGValue(color); B[i][j]=GetBValue(color); buffg[i][j]=R[i][j]; } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::N4Click(TObject *Sender) { Series1->Clear(); for(j=0;j for(i=0;i buffg[i][j]= R[i][j]*0.299 G[i][j]*0.587 B[i][j]*0.114; Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series1->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::N5Click(TObject *Sender) { for(j=0;j for(i=0;i if( buffg[i][j] < 128 ) { buffg[i][j]= TColor(RGB(0,0,0)); } else if( buffg[i][j] >= 128 ) { buffg[i][j]= TColor(RGB(255,255,255)); } Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::NormalizedHistogram1Click(TObject *Sender) { Series2->Clear(); enhancement.NormHist(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series2->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Medianfilter1Click(TObject *Sender) { Edit3->Text="1"; Series2->Clear(); mask.Median(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } double ser[256]={0}; int vl=0; for(j=0;j for(i=0;i vl=buffg[i][j]; ser[(int)vl] ; } } for(i=0;i<256;i ) { Series2->Add(ser[i],i); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Sobleedgedetect1Click(TObject *Sender) { Edit2->Text="1.0"; Detect.Soble(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(buffg[i][j],buffg[i][j],buffg[i][j])); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::N6Click(TObject *Sender) { if(Form1->SavePictureDialog1->Execute()) { if(Form1->SavePictureDialog1->FilterIndex==1) //JPEG { TheJPEG = new TJPEGImage; TheJPEG->Assign(Image2->Picture->Bitmap); TheJPEG->SaveToFile(Form1->SavePictureDialog1->FileName); } else if(Form1->SavePictureDialog1->FilterIndex==2) //BMP { Form1->Image2->Picture->SaveToFile(Form1->SavePictureDialog1->FileName); } } } //--------------------------------------------------------------------------- //TCustomChart void __fastcall TForm1::Luminositychange1Click(TObject *Sender) { change.RHR(); for(j=0;j for(i=0;i Form1->Image2->Canvas->Pixels[i][j]=TColor(RGB(R[i][j],G[i][j],B[i][j])); } } } //--------------------------------------------------------------------------- [/code]
------
恩... 編輯記錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |