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

影像存取

尚未結案
kkk1225
一般會員


發表:7
回覆:14
積分:4
註冊:2010-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-24 19:02:07 IP:140.120.xxx.xxx 訂閱
請教一下,使用連續影像相減再二值化,找出影像中的移動物體(白色),而背景是靜止不動(黑色)。
當物體移動時,影像會偵測到移動物體的部份,但當物體停止移動時,整個影像畫面全黑。
請問有什麼方法,可以當物體停止移動後,可以使畫面持續顯示移動物體的白色部份,
而不會因影像畫面一直更新,使影像畫面變成沒有移動物體的全黑影像畫面。
多多請導,謝謝。

------
多多指教
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-24 20:46:58 IP:122.116.xxx.xxx 訂閱
當沒有物體移動的時候,顯示最後一次有物體的畫面 ^^
kkk1225
一般會員


發表:7
回覆:14
積分:4
註冊:2010-03-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-06-25 10:51:01 IP:140.120.xxx.xxx 訂閱
非常感謝你的回答,我也是這樣的方法去做,可是當做影像存取,
一直無法顯示出有物體的畫面,因為只要物體不動畫面就全黑了。
以下是程式部份,不知道邏輯那裡出錯。
可以指導一下,謝謝。
[code cpp]
//---------------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
count ;
Graphics::TBitmap* BMP1 =new Graphics::TBitmap();
BMP1->Assign(Image1->Picture->Bitmap);
BMP1->PixelFormat=pf24bit;
Graphics::TBitmap* BMP2 =new Graphics::TBitmap();
BMP2->Assign(Image2->Picture->Bitmap);
BMP2->PixelFormat=pf24bit;
int i,j,sum;
byte *ptr,*ptr1;
double frame_now[480][640];
double frame_next[480][640];
double d[480][640];

for(j=0;jHeight;j )
{
ptr = (Byte *)BMP1->ScanLine[j];
for(i=0;iWidth;i )
{
if ((count%2)==0)
frame_now[j][i] = (77*ptr[i*3 2] 151*ptr[i*3 1] 28*ptr[i*3])/256;
else
frame_next[j][i] = (77*ptr[i*3 2] 151*ptr[i*3 1] 28*ptr[i*3])/256;
}
}
//-------辨別物體移動或靜止時的條件---------------------------------------------------------------------------------
sum=0;
for(j=0;jHeight;j )
{
ptr = (Byte *)BMP1->ScanLine[j];
for(i=0;iWidth;i )
{
sum =abs(frame_now[j][i]-frame_next[j][i]);
}
}
//--------------當物體靜止不動影像存取--------------------------------------------------------
if((sum/H*W)<100)
{
for(j=0;jHeight;j )
{
ptr = (Byte *)BMP1->ScanLine[j];
for(i=0;iWidth;i )
{
if(d[j][i]<30)
{
ptr1[i*3]=0;
ptr1[i*3 1]=0;
ptr1[i*3 2]=0;
}
else
{
ptr1[i*3]=255;
ptr1[i*3 1]=255;
ptr1[i*3 2]=255;
}
}
}
}
//---------當物體移動時影像存取---------------------------------------------------------------------
else
{
for(j=0;jHeight;j )
{
ptr = (Byte *)BMP1->ScanLine[j];
for(i=0;iWidth;i )
{
d[j][i] = abs(frame_now[j][i]-frame_next[j][i]);
if(d[j][i]<30)
{
ptr[i*3]=0;
ptr[i*3 1]=0;
ptr[i*3 2]=0;
}
else
{
ptr[i*3]=255;
ptr[i*3 1]=255;
ptr[i*3 2]=255;
}
}
}
}
Image2->Picture->Bitmap->Assign(BMP1);
Image2->Picture->Bitmap->Assign(BMP2);
delete BMP1;
delete BMP2;
}
[/code]

------
多多指教
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-06-25 16:07:26 IP:122.116.xxx.xxx 訂閱
你並沒有將有物體的畫面"保留"下來
kkk1225
一般會員


發表:7
回覆:14
積分:4
註冊:2010-03-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-06-25 17:17:41 IP:140.120.xxx.xxx 訂閱
請問一下,要如何保留下來有物體的畫面,
存取方式不太懂,可以解說一下方式或舉例,
多多教導一下。
------
多多指教
系統時間:2017-10-20 17:07:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!