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

圓心抓取不準疑問

缺席
yc601065
一般會員


發表:3
回覆:5
積分:1
註冊:2009-12-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-04-22 12:30:25 IP:220.130.xxx.xxx 訂閱
Hi各位先進~
以下是我抓取原心的程式Code,目前有個問題,我抓取的(x,y)中心點都會偏,
不是正確的圓心點,想請教是否是我的Logic觀念弄錯
目前我找圓心的方式事先將圖二值化,再找Pixel為0的點做分析
分析圖片:24Bit BMP檔如附件


[code c#]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Image1->Picture->Bitmap->Empty==true)
ShowMessage("請擷取影像!!");
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Image1->Picture->Bitmap->PixelFormat = pf24bit;
//Graphics::TBitmap;
//是表示TBitmap這個結構是來自於Graphics這個物件,
//因為很多物件都可能有TBitmap這個結構,
//所以它是用來指定來自於哪個物件的.
Byte *ptr;
int r,g,b;
int gray;
int i,j;
int threshold;
threshold=ScrollBar1->Position;
Edit1->Text=ScrollBar1->Position;
Bmp->Assign(Image1->Picture->Bitmap);
for(j=0;jHeight;j )
{
ptr=(Byte *)Bmp->ScanLine[j];//ptr指標指向bmp第y行

for(i=0;iWidth;i )
{
b=ptr[i*3];
g=ptr[i*3 1];
r=ptr[i*3 2];
gray=0.299*r 0.587*g 0.114*b; //灰階演算
if(gray>threshold)
gray=255;
else
gray=0;
ptr[i*3]=(Byte)gray;//藍
ptr[i*3 1]=(Byte)gray; //綠
ptr[i*3 2]=(Byte)gray; //紅
}
}
Image2->Picture->Assign(Bmp);
delete Bmp;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button2Click(TObject *Sender)
{
Byte *ptr;
int start_x=0;
int end_x=0;
int max_pixcel=0;
int end_y=0;
int y=0;
int x_count=0;
Image2->Canvas->Pen->Style=psSolid;
Image2->Canvas->Pen->Color=Pen_Color;
for( int x=0;xHeight;x )
{
y=0;
x_count=0;
ptr=(Byte *)Image2->Picture->Bitmap->ScanLine[x];
//Edit3->Text=ptr[0];
//Edit4->Text=Image1->Picture->Bitmap->Canvas->Pixels[0][1];
while(yWidth){
if(ptr[y*3]==0)
{
x_count =1;
if(x_count==1)
start_x=y;
}
else
if(x_count !=0 || y==Image2->Width-1)
break;
y ;
}
end_x=start_x x_count -1;
if(max_pixcel {
max_pixcel=end_x;
end_y=x;
}
Edit3->Text=end_x;
Edit4->Text=end_y;
}
Image2->Canvas->MoveTo(end_x-5 ,end_y);
Image2->Canvas->LineTo(end_x 5 ,end_y);
Image2->Canvas->MoveTo(end_x,end_y-5 );
Image2->Canvas->LineTo(end_x,end_y 5 );
}

[/code]
編輯記錄
yc601065 重新編輯於 2011-04-22 01:10:25, 註解 無‧
yc601065
一般會員


發表:3
回覆:5
積分:1
註冊:2009-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-04-23 22:51:35 IP:124.8.xxx.xxx 訂閱
已找到問題原來是我判斷圓心X方式錯誤
系統時間:2017-12-12 4:48:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!