全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1379
推到 Plurk!
推到 Facebook!

區域影像處理的問題

尚未結案
vincentpai10
一般會員


發表:5
回覆:0
積分:1
註冊:2011-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-04-20 00:00:52 IP:180.177.xxx.xxx 訂閱
自己做了一個可以偵測灰階圖白色上下邊界值的副程式
可是現在想改成針對滑鼠框選的部分做處理就失敗
麻煩高手幫我喵一下~~

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;
}
}
系統時間:2024-05-04 19:28:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!