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

如何影像相減?

答題得分者是:taishyang
susamlin2001
一般會員


發表:15
回覆:7
積分:4
註冊:2010-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-03 21:47:34 IP:125.224.xxx.xxx 訂閱
我用webcam連拍兩張存在c底下再停止,以下是我的程式
ghCapWnd =hCapWnd1;
static int u = 1;
AnsiString sFileName;
if (u<3)
{
sFileName ="C:\\picture\\" IntToStr(u ) ".bmp";
capFileSaveDIB(ghCapWnd, sFileName.c_str());
}

之後我想將所存在C底下的第一張(1.bmp)和第二張(2.bmp)做背景相減,然後將相減後的結果顯示在Panel1裡,請問有大哥大姊可指導一下嗎?
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-07-05 11:08:43 IP:122.116.xxx.xxx 訂閱
請先爬舊文章^^
susamlin2001
一般會員


發表:15
回覆:7
積分:4
註冊:2010-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-07-05 18:12:23 IP:125.224.xxx.xxx 訂閱
我爬過了~
但找不到我所想要答案...
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-07-05 18:26:37 IP:122.116.xxx.xxx 訂閱
影像相減的步驟你完成了嗎?
若沒有,請先爬舊文章/範例,
susamlin2001
一般會員


發表:15
回覆:7
積分:4
註冊:2010-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-07-06 00:32:58 IP:125.224.xxx.xxx 訂閱

===================引 用 taishyang 文 章===================
Graphics::TBitmap *pBitmap=new Graphics::TBitmap;
Graphics::TBitmap *pBitmap1=new Graphics::TBitmap;
Graphics::TBitmap *pBitmap2=new Graphics::TBitmap;

int Width,Height,b1,g1,r1,b2,g2,r2,x,y,show1,show2,show3;
Byte *ptr1,*ptr2,*ptr3;
pBitmap= Image1->Picture->Bitmap;
pBitmap1= Image3->Picture->Bitmap;
pBitmap2= Image4->Picture->Bitmap;
for ( y = 0; y < pBitmap->Height; y )
{
ptr1 = (Byte *)pBitmap->ScanLine[y];
ptr2 = (Byte *)pBitmap1->ScanLine[y];
ptr3 = (Byte *)pBitmap2->ScanLine[y];
for ( x = 0; x < pBitmap->Width; x )
{
b1=ptr1[x*3];
g1=ptr1[x*3 1];
r1=ptr1[x*3 2];
b2=ptr2[x*3];
g2=ptr2[x*3 1];
r2=ptr2[x*3 2];
show1=(0.299*r1 0.587*g1 0.114*b1);
show2=(0.299*r2 0.587*g2 0.114*b2);
show3=abs(show1-show2);


if (show3>100)
{
show3=0;
}
else
{
show3=255;
}
ptr3[x*3]=(Byte)show3;
ptr3[x*3 1]=(Byte)show3;
ptr3[x*3 2]=(Byte)show3;
Image4->Picture->Assign(pBitmap1);
}
}
}
}
[/code]

編輯記錄
susamlin2001 重新編輯於 2010-07-06 00:36:24, 註解 無‧
susamlin2001 重新編輯於 2010-07-06 00:38:24, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-07-06 12:15:01 IP:122.116.xxx.xxx 訂閱
scanline index out of range]
你要確認你的bitmap是pf24bit才能用你PO的程式取得RGB

susamlin2001
一般會員


發表:15
回覆:7
積分:4
註冊:2010-06-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-07-06 15:40:28 IP:125.224.xxx.xxx 訂閱

===================引 用 taishyang 文 章===================
scanline index out of range]
你要確認你的bitmap是pf24bit才能用你PO的程式取得RGB
-------------------------------------------------------------------
謝謝taishyang~~
我後來有改成pf24bit後解決此問題了,可是卻有另一個問題出現了,
出現了以下訊息讓程式停止了
‘Access violation at address 004060D5 in module ‘RCV.exe’. Write of address 00000000’.
是我前面程式有寫錯嗎?

taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-07-06 15:49:56 IP:122.116.xxx.xxx 訂閱
Access violation]
你記憶體存取有誤所造成

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