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

capSetCallbackOnFrame

尚未結案
yplin
一般會員


發表:9
回覆:16
積分:5
註冊:2004-08-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-28 18:48:52 IP:140.112.xxx.xxx 未訂閱
各位好,我將要處理webcam所擷取進來的即時影像,其處理程序都在CallbackOnFrame中撰寫,並在video畫框線。問題在於,只處理第一張之影像後即不再處理(有第一張處理完後的畫框),但video還是會顯示,不知問題出在哪,請各位不吝指教,謝謝~    
 
LRESULT CALLBACK FrameCallBack( HWND hCapWnd, Longint lpvhdr )
{
   LPVIDEOHDR VideoStr;
   static BITMAPINFOHEADER BitmapHead;
   static BITMAPINFO BitmapInfo;
   static BITMAPFILEHEADER BitmapFileHead;
   int BIHsize, byte;
   Byte *ptr,*ptr1;
   TMemoryStream *stream = new TMemoryStream;
   VideoStr=LPVIDEOHDR(lpvhdr);
   capGetStatus( hCapWnd, &CapStatus, sizeof(CapStatus) ) ;
   BIHsize=capGetVideoFormatSize( hCapWnd );
   capGetVideoFormat( hCapWnd, &BitmapHead, BIHsize);
   BitmapInfo.bmiHeader=BitmapHead;
   BitmapHead.biWidth=Cap_width;
   BitmapHead.biHeight=Cap_height;
   stream->Size=sizeof(BitmapFileHead)   sizeof(BitmapHead)   BitmapHead.biSizeImage;
   BitmapFileHead.bfType=0x4D42;                  
   BitmapFileHead.bfSize=stream->Size;  
   BitmapFileHead.bfReserved1=(WORD)0;
   BitmapFileHead.bfReserved2=(WORD)0;
   BitmapFileHead.bfOffBits=sizeof(BitmapFileHead)   sizeof(BitmapHead); 
   stream->Position=0;    
   stream->WriteBuffer( &BitmapFileHead.bfType, sizeof(BitmapFileHead.bfType) );
   stream->WriteBuffer( &BitmapFileHead.bfSize, sizeof(BitmapFileHead.bfSize) );
   stream->WriteBuffer( &BitmapFileHead.bfReserved1, sizeof(BitmapFileHead.bfReserved1) );
   stream->WriteBuffer( &BitmapFileHead.bfReserved2, sizeof(BitmapFileHead.bfReserved2) );
   stream->WriteBuffer( &BitmapFileHead.bfOffBits, sizeof(BitmapFileHead.bfOffBits) );
   stream->WriteBuffer( &BitmapInfo, sizeof(BitmapInfo) );       (void*)ptr=stream->Memory;
   ptr=ptr   BitmapFileHead.bfOffBits;
   Move( VideoStr->lpData, ptr, BitmapHead.biSizeImage);
   stream->Position=0;
   Form1->Image1->Picture->Bitmap->LoadFromStream(stream);       // *****************************************************
     for (int h=0;h<240;h  )
   {
      ptr1=(Byte *)Form1->Image1->Picture->Bitmap->ScanLine[h];
      //ptr1=(Byte *)bmp->ScanLine[h];
      for (int w=0;w<320; w  )
      {
         Full_RGB[w][h][2]=(int) ptr1[3*w];    //B
         Full_RGB[w][h][1]=(int) ptr1[3*w 1];  //G
         Full_RGB[w][h][0]=(int) ptr1[3*w 2];  //R
      }
   }
   //*******************************************************
   F_A(IM);          
   F_B(IM1);    
   F_C(IM2);                
   Form1->Image1->Canvas->Pen->Color=clYellow;
   Form1->Image1->Canvas->Pen->Width=2;
   Form1->Image1->Canvas->MoveTo(x1,y1);
   Form1->Image1->Canvas->LineTo(x2,y2);
   Form1->Image1->Canvas->LineTo(x3,y3);
   Form1->Image1->Canvas->LineTo(x4,y4);
   Form1->Image1->Canvas->LineTo(x1,y1);
   //*********************************************************
   delete( stream );
   return(0);
}
系統時間:2024-07-01 7:55:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!