Show captured video from panel to image |
尚未結案
|
yplin
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
|
KENI_LIN
中階會員 ![]() ![]() 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
yplin
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
我已經找不到版上高手提供的範例程式路徑了,所以我將其程式碼貼上,真不好意思。 我將BCB6已經更新至update 4的版本,但是也會發生同樣的狀況。 我同樣的也執行了.exe檔也是如此,實在是沒有頭緒。 anyway,感謝你的回覆,謝謝。
//建立callbackonframe函式,底下為未經壓縮模式24bit沒有調色盤資料 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); }發表人 - yplin 於 2004/08/12 19:20:30 |
KENI_LIN
中階會員 ![]() ![]() 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
yplin
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
|
KENI_LIN
中階會員 ![]() ![]() 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
|
yplin
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
|
yplin
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2004-08-07 發送簡訊給我 |
與大家分享我的心得: 之前會出現的Bitmap image is not valid的錯誤訊息,是每次在執行程式時其初始化的格式都是I420而不是RGB24,所以才會發生錯誤(webcam of logitech 3000 pro) 。當然最佳的作法是做所有各式的初始化設定,已確保程式的穩定性。但是,我發現我的問題出現在webcam,因為我換成了logitech 4000 pro之後,其上述的問題不再發生,其初始的format都是RGB24,很詭異的是我的驅動程式是一樣的,卻不知為何會有此情況發生。 Anyway,問題雖然是解決了,不過做初始化設定還是必需的。 與大家分享~~
|
myli1017
一般會員 ![]() ![]() 發表:6 回覆:5 積分:2 註冊:2005-11-04 發送簡訊給我 |
|
KENI_LIN
中階會員 ![]() ![]() 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |