無法整張圖邊緣化 |
尚未結案
|
jackylin66
一般會員 發表:1 回覆:2 積分:0 註冊:2004-10-16 發送簡訊給我 |
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 發送簡訊給我 |
|
jackylin66
一般會員 發表:1 回覆:2 積分:0 註冊:2004-10-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |