要如何加快影像,達到即時的效果 |
答題得分者是:n890377
|
forgetguitar
一般會員 發表:1 回覆:1 積分:0 註冊:2006-12-15 發送簡訊給我 |
各位大大您好,不好意思,我是新手,有個影像延遲的問題想問一下,
我使用double buffer的方法,將影像(320X240灰階)擷取到buffer1的矩陣中,再針對每個pixel作不同的處理, 之後用buffer2取像後,再將buffer2與buffer1中的資料做矩陣相減的動作, 用循環的方式希望能達到real-time的灰階處理, 不過似乎在做矩陣相減的動作時,讓影像出現延遲的現象,(因為每取像一次,就會跑320X240次迴圈) 請問各位大大,有加快矩陣相減,或是直接用buffer2減去buffer1的方法嗎?? 謝謝^^ |
n890377
一般會員 發表:17 回覆:16 積分:21 註冊:2006-07-13 發送簡訊給我 |
以下程式碼你參考看看: void __fastcall TForm1::Timer1Timer(TObject *Sender) { Graphics::TBitmap *Bmp1 = new Graphics::TBitmap(); Graphics::TBitmap *Bmp2 = new Graphics::TBitmap(); Byte *ptr1; Byte *ptr2; int b1,g1,r1,b2,g2,r2; int gray1,gray2,gray3; Bmp1->Assign(Image1->Picture->Bitmap); Bmp2->Assign(Image2->Picture->Bitmap); for(int i=0;i { ptr1=(Byte *)Bmp1->ScanLine[i]; ptr2=(Byte *)Bmp2->ScanLine[i]; for(int j=0;j { b1=ptr1[j*3]; g1=ptr1[j*3 1]; r1=ptr1[j*3 2]; gray1=0.299*r1 0.587*g1 0.114*b1;//得到Image1的灰度值 b2=ptr2[j*3]; g2=ptr2[j*3 1]; r2=ptr2[j*3 2]; gray2=0.299*r2 0.587*g2 0.114*b2;//得到Image2的灰度值 gray3=abs(gray1-gray2); //灰度值相減 //===回代=== // ptr2[j*3] =(Byte)gray3; // ptr2[j*3 1]=(Byte)gray3; // ptr2[j*3 2]=(Byte)gray3; //========== if(gray3>20) { ptr2[j*3 2]=ptr1[j*3 2]; ptr2[j*3 1]=ptr1[j*3 1]; ptr2[j*3]=ptr1[j*3]; } else { ptr2[j*3] = 255; ptr2[j*3 1]= 255; ptr2[j*3 2]= 255; } } } Image3->Picture->Assign(Bmp2); }
------
. |
forgetguitar
一般會員 發表:1 回覆:1 積分:0 註冊:2006-12-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |