全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2545
推到 Plurk!
推到 Facebook!

Show captured video from panel to image

尚未結案
yplin
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-10 15:28:20 IP:140.112.xxx.xxx 未訂閱
大家好    我在版上看了一系列的CCD的相關文章,也把版上提供的panel之影像顯示在image的範例程式下載試試,不知道何原因會出現錯誤訊息,但前幾天都還是可執行的。 以上就是出現的錯誤訊息,不知道各位有碰到此種情況嗎?
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-12 14:41:37 IP:61.66.xxx.xxx 未訂閱
你是用哪一個版主程式,可以把路徑pass出來嗎!是使用vfw或是DirectShow?    但如果你之前是可以使用,那我建議你complie後,不要再BCB的debug mode執行,另外在該目錄執行exe檔看看正不正常,因為有時候再BCB底下run,在記憶體資源不足的情形下,容易出現著個訊息!!
------
Keni Lin
yplin
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-12 19:16:34 IP:140.112.xxx.xxx 未訂閱
我已經找不到版上高手提供的範例程式路徑了,所以我將其程式碼貼上,真不好意思。 我將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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-13 09:55:45 IP:211.75.xxx.xxx 未訂閱
你有沒有做設解析度的Botton,如果沒有,你可以參考以下這個程式:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=51622    因為有可能設到其它mode,看是否可以設在RGB24: 在其它mode下,如I420不是未經壓縮的24bit,會有格式錯誤訊息產生! 如果沒有這個
------
Keni Lin
yplin
一般會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-13 10:59:19 IP:140.112.xxx.xxx 未訂閱
很謝謝你的建議,我也試了改變format 的格式為RGB,的確是可行。不過,當格式改變為webcam driver所不支援的格式後,當然是不可行的,再重新run後,即會再出現"bitmap in not valid"的訊息。我想問的是,可以直接在初始值設定時,將video設定為RGB的格式,而不是使用dialog的方式去調整呢?
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-13 14:15:15 IP:61.220.xxx.xxx 未訂閱
我不是原作者,所以我也不知道有沒有辦法,我想你應該是參考下列討論: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22263    基本上camera解析度會一直記憶前一個設定,除非更換硬體或USB位置或執行一個新compile的程式才會改變! 因為我也是個初學者,要非常熟悉 > > >
------
Keni Lin
yplin
一般會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-13 21:56:51 IP:140.112.xxx.xxx 未訂閱
感謝你的回覆~ 那些function我都知道,也一直在試初始化的設定,但重新compile之後其webcam的format會停留在I420而不是RGB,所以錯誤的訊息就是在此,得在用capDlgVideoFormat改回RGB才可行,真是困擾~
yplin
一般會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-14 00:16:02 IP:140.112.xxx.xxx 未訂閱
與大家分享我的心得: 之前會出現的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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-29 15:37:55 IP:210.202.xxx.xxx 未訂閱
請問keni_lin大大 : 你所顯示的視窗是在哪設定謝格式呢
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-30 21:36:44 IP:210.80.xxx.xxx 未訂閱
感動~~有好一陣子沒來KTop交流了,沒想到一年前的文章會出現在這裡! 我想你應該是問那張有秀出"RGB24"的畫面怎麼出來? 它是建立在你買的CCD附的程式,看有沒有"設定"這個選項,如果是英文版,找看看有 沒有"option"選項,都點選看看應該會出現類似的畫面. 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin
系統時間:2024-04-26 5:55:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!