線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:837
推到 Plurk!
推到 Facebook!

無法整張圖邊緣化

尚未結案
jackylin66
一般會員


發表:1
回覆:2
積分:0
註冊:2004-10-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-10 13:50:46 IP:218.162.xxx.xxx 未訂閱
void __fastcall TForm1::GetBitmap(void) {         Data = new int*[Image_Width];         Data_temp = new int*[Image_Width];         for(int i = 0; i < Image_Width; i++)         {                 Data[i] = new int[Image_Height];                 Data_temp[i] = new int[Image_Height];                 for(int j = 0; j < Image_Height; j++)                         Data[i][j] = Data_temp[i][j]= (Image2->Canvas->Pixels[i][j])&0xff;         }    } //---------------------------------------------------------------------------    void __fastcall TForm1::SetBitmap(void) {         for(int i = 0; i < Image_Width; i++)                 for(int j = 0; j < Image_Height; j++)                         Image2->Canvas->Pixels[i][j] = TColor(RGB(Data[i][j],Data[i][j],Data[i][j])); } //--------------------------------------------------------------------------- void __fastcall TForm1::Retrieve(void) {         for(int i = 0; i < Image_Width; i++)                 for(int j = 0; j < Image_Height; j++)                         Data[i][j] = Data_temp[i][j]; } //---------------------------------------------------------------------------    void __fastcall TForm1::Open1Click(TObject *Sender) {         if (!OpenPictureDialog1->Execute()) return;          FileName1 = OpenPictureDialog1->FileName;            Image1->Picture->LoadFromFile(FileName1);         Image2->Picture->LoadFromFile(FileName1);         Image_Height = Image2->Height;         Image_Width = Image2->Width;         GetBitmap();         }    //---------------------------------------------------------------------------    void __fastcall TForm1::Sobel1Click(TObject *Sender) {          int **Data2;          Data2 = new int*[Image_Width];          for(int i = 0; i < Image_Width; i++)                  Data2[i] = new int[Image_Height];             int T = StrToInt(Edit2->Text);             for(int i = 1; i < Image_Width-1; i++)                 for(int j = 1; j < Image_Height-1; j++)                 {                            int  C1,C2,C3,C4,C5,C6,C7,C8,C9,v1,v2;                         C1 = Data[i-1][j-1]*(-1);                         C2 = Data[i-1][j]*(-2);                         C3 = Data[i-1][j+1]*(-1);                         C4 = 0;                         C5 = 0;                         C6 = 0;                         C7 = Data[i+1][j-1]*(1);                         C8 = Data[i+1][j]*(2);                         C9 = Data[i+1][j+1]*(1);                            v1 = C1+C2+C3+C4+C5+C6+C7+C8+C9;                         if (v1<0) v1=-v1; C1 = Data[i-1][j-1]*(-1); C2 = 0; C3 = Data[i-1][j 1]*(1); C4 = Data[i][j-1]*(-2); C5 = 0; C6 = Data[i][j 1]*(2); C7 = Data[i 1][j-1]*(-1); C8 = 0; C9 = Data[i 1][j 1]*(1); v2 = C1 C2 C3 C4 C5 C6 C7 C8 C9; if (v2<0) v2=-v2; if ((v1 v2)>T) Data2[i][j]=255 ; else Data2[i][j]=0; } for(int i = 0; i < Image_Width; i ) for(int j = 0; j < Image_Height; j ) { if( (i==0)||(j==0)||(i==(Image_Width-1))||(j==(Image_Height-1)) ) Data[i][j] = 0; else Data[i][j] = Data2[i][j]; } SetBitmap(); for(int i = 0; i < Image_Width; i ) delete[] Data2[i]; delete[] Data2; ------------------------------------- 請問為何執行後,僅左上部分影像被邊緣化??而不是整張圖片?
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-10 18:29:59 IP:140.113.xxx.xxx 未訂閱
Dear jackylin66:
引言:請問為何執行後,僅左上部分影像被邊緣化??而不是整張圖片?
經過測試,沒有問題啊~不曉得您說的是指什麼樣的情況? 這是灰階圖去做的,彩色RGB的測試過也沒問題
jackylin66
一般會員


發表:1
回覆:2
積分:0
註冊:2004-10-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-19 01:07:36 IP:218.164.xxx.xxx 未訂閱
不好意思~~我找到答案了~~~ 原因是我雞婆~~ 在前面做了int data[640][480]; intdata2[640][480];造成的~~~
系統時間:2024-05-17 13:04:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!