capSetCallbackOnFrame |
尚未結案
|
yplin
一般會員 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
各位好,我將要處理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); } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |