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

影像相減與 Image 畫圖

尚未結案
炎峰
一般會員


發表:7
回覆:9
積分:3
註冊:2011-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-04-26 19:33:45 IP:220.132.xxx.xxx 訂閱
各位大大好 
小弟這學期才開始接觸BCB與影像處理,如有不周還請大大們體諒

小弟利用 vfw 擷取影像到 Image 上顯示,目前已作出前一張Frame與目前的Frame相減
現在小弟試著抓出移動的區域,先找出上下左右四個點,然後用Image劃出矩形

問題出在...
1. 相減後有經過Opening與Laplace邊緣偵測,但是找的點似乎不是很準確
2. 若移動範圍在畫面下半部,則點幾乎全跑了...
3. 畫出來的線一閃一閃的,不會穩定的顯示

找點的部分,我利用副程式傳回值,如下:

[code cpp]
int find_left(int hi,int wd)
{
int row,col,xx = 0;

for (row = 0; row < hi; row )
{
for (col = 0; col < wd; col )
{
if ((p1[row][col] > 200) && ((xx == 0) || (xx > col)))
xx = col;
}
}
return xx;
}

int find_right(int hi,int wd)
{
int row,col,xx = 0;

for (row = 0; row < hi; row )
{
for (col = wd; col > 0; col--)
{
if ((p1[row][col] > 200) && ((xx == 0) || (xx < col)))
xx = col;
}
}
if (xx == 0)
return wd;
else
return xx;
}

int find_up(int hi,int wd)
{
int row,col,yy = 0;

for (row = 0; row < hi; row )
{
for (col = 0; col < wd; col )
{
if (p1[row][col] > 200 && ((yy == 0) || (yy > row)))
{
yy = row;
break;
}
}
}
if (yy == 0)
return hi;
else
return yy;
}

int find_down(int hi,int wd)
{
int row,col,yy = 0;

for (row = hi; row > 0; row--)
{
for (col = 0; col < wd; col )
{
if (p1[row][col] > 200 && ((yy == 0) || (yy < row)))
{
yy = row;
break;
}
}
}
//yy = abs(hi - yy);
return yy;
}
[/code]

至於為啥要 240 - yy ... 小弟只是發現他剛好相反,但是我邏輯有點搞混,還請大大幫忙看看 ˊˋ

找到點並畫圖的地方...

[code cpp]
l = find_left(dimg->Height,dimg->Width);
r = find_right(dimg->Height,dimg->Width);
d = find_down(dimg->Height,dimg->Width);
u = find_up(dimg->Height,dimg->Width);

//if (abs(r-l) < 200)
//{
Form1->Image1->Picture->Bitmap->Canvas->Draw(0,0,dimg);
Form1->Image1->Picture->Bitmap->Canvas->Pen->Mode = pmCopy;
Form1->Image1->Picture->Bitmap->Canvas->Pen->Color = clRed;
Form1->Image1->Picture->Bitmap->Canvas->Pen->Width = 4;
Form1->Image1->Picture->Bitmap->Canvas->Brush->Style = bsClear;
Form1->Image1->Picture->Bitmap->Canvas->Rectangle(l,u,r,d);
//}
[/code]

dimg 就是小弟相減後的圖片...TBitmap 24bit 格式

附件是一張結果...剛好他紅框一閃一閃...沒有的時候我按拍照了 XD
Memo 有顯示找到的點...依序是 l r u d

事情就是這樣,請大大們幫幫忙囉
如果是小弟爬文不夠...或者犯了愚蠢的錯誤,還請大大們指正 ...

附加檔案:4db6ad99ee122_001.PNG
編輯記錄
炎峰 重新編輯於 2011-04-26 05:35:14, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:36:18, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:39:38, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:48:02, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:50:40, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:51:29, 註解 無‧
炎峰 重新編輯於 2011-04-26 05:55:17, 註解 無‧
炎峰 重新編輯於 2011-04-28 06:10:07, 註解 無‧
系統時間:2017-10-23 21:32:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!