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

關於webcam抓圖...只有1/4 ?

尚未結案
willycheng
一般會員


發表:7
回覆:7
積分:2
註冊:2006-12-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-26 11:58:19 IP:211.76.xxx.xxx 訂閱
我使用了以下程式碼來作抓圖 可是抓出來的圖只有全影像的1/4...
不知道該如何設定才可以抓到整個影像

LRESULT CALLBACK FrameCallBack( HWND hCapWnd, Longint lpvhdr )

{

LPVIDEOHDR VideoStr;

static BITMAPINFOHEADER BitmapHead;

static BITMAPINFO BitmapInfo;

static BITMAPFILEHEADER BitmapFileHead;

CAPSTATUS status;

int BIHsize, byte;

Byte *ptr;

TMemoryStream *stream = new TMemoryStream;

// 取得圖片資料

VideoStr=LPVIDEOHDR(lpvhdr);

// 取得CAP訊息

capGetStatus( hCapWnd, &status, sizeof(status) ) ;

// 取得圖片格式容量大小

BIHsize=capGetVideoFormatSize( hCapWnd );

// 取得圖片格式 代入 bitmapinfohead 內

capGetVideoFormat( hCapWnd, &BitmapHead, BIHsize);

// 設定 BITMAPINFO

BitmapInfo.bmiHeader=BitmapHead;



// 取得圖檔總容量

stream->Size=sizeof(BitmapFileHead) sizeof(BitmapHead) BitmapHead.biSizeImage-2;

//stream->Size=sizeof(BitmapFileHead) sizeof(BitmapHead) BitmapHead.biSizeImage;



// 設定 BITMAPFILEHEAD

BitmapFileHead.bfType=0x4D42; //總是 BM

BitmapFileHead.bfSize=stream->Size; //該圖檔總大小

//BitmapFileHead.bfOffBits=sizeof(BitmapFileHead) sizeof(BitmapHead); // 偏移至imagedata大小

BitmapFileHead.bfOffBits=sizeof(BitmapFileHead) sizeof(BitmapHead)-2; // 偏移至imagedata大小

//BitmapFileHead.bfOffBits=sizeof(BitmapFileHead) sizeof(BitmapHead); // 偏移至imagedata大小

// 將資料存入 memorystream

stream->Position=0;

stream->WriteBuffer( &BitmapFileHead, sizeof(BitmapFileHead) );

stream->WriteBuffer( &BitmapInfo, sizeof(BitmapInfo) );

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 = BitmapFileHead.bfOffBits;

Move( VideoStr->lpData, ptr, BitmapHead.biSizeImage);

// 存入完成

stream->Position=0;

//

Form1->Image1->Picture->Bitmap->LoadFromStream(stream);

//Form1->Panel1-> ->Picture->Bitmap->LoadFromStream( stream );

delete( stream );

capSetCallbackOnFrame (hCapWnd, NULL); //停止callbackonframe

return(0);

}


willycheng
一般會員


發表:7
回覆:7
積分:2
註冊:2006-12-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-26 12:15:01 IP:211.76.xxx.xxx 訂閱
痾...沒事了發現錯誤...程式碼裡自動把cam設定成160*120
不過預覽的地方還是320*240 所以我以為是程式問題orz...
系統時間:2024-04-20 21:52:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!