區域影像處理的問題 |
尚未結案
|
vincentpai10
一般會員 發表:5 回覆:0 積分:1 註冊:2011-11-10 發送簡訊給我 |
自己做了一個可以偵測灰階圖白色上下邊界值的副程式
可是現在想改成針對滑鼠框選的部分做處理就失敗 麻煩高手幫我喵一下~~ void __fastcall TForm1::BitBtn5Click(TObject *Sender) { long* ProjectV = new long[Image1->Picture->Bitmap->Width]; long* ProjectH = new long[Image1->Picture->Bitmap->Height]; Byte *ptr; int row=0,col=0; int Histart=0,Wistart=0,Hiend=0,Wiend=0;//滑鼠框選的四個角 if(draw==true) //if有框選,針對其區域做偵測 { Histart=LX; Wistart=LY; Hiend=RX; Wiend=RY; } else //否則對全圖做偵測 { Histart=0; Wistart=0; Hiend=Image1->Picture->Bitmap->Height; Wiend=Image1->Picture->Bitmap->Width; } for(row = Histart; row < Hiend; row ) { ptr = (Byte *)Image1->Picture->Bitmap->ScanLine[row]; for(col = Wistart; col < Wiend ; col ) { if(ptr[col] > 30) //亮度大於30才叫白色 { ProjectV[col] ; ProjectH[row] ; } } } Image1->Canvas->Pen->Color = clRed; for(row = Histart; row < Hiend; row ) { if(ProjectH[row] > 0) //抓出垂直方向最上層的白色位置 { up = row; Image1->Canvas->Pen->Color = clRed; Image1->Canvas->MoveTo(Histart,row ); Image1->Canvas->LineTo(Hiend,row); break; } } for(int row = Wiend -1; row >= 0 ; row--) { if(ProjectH[row] > 0) //抓出垂直方向最下層的白色位置 { down = row; Image1->Canvas->Pen->Color = clRed; Image1->Canvas->MoveTo(Histart,row ); Image1->Canvas->LineTo(Hiend, row); break; } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |