全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4962
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

我想控制每一秒擷取4張畫面...

尚未結案
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-17 23:52:42 IP:218.162.xxx.xxx 未訂閱
我想1.控制CCD每一秒擷取4張畫面...且2.每一張都要放在記憶體中作處理... 請問有人知道該如何下手嗎?
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-18 15:22:20 IP:218.162.xxx.xxx 未訂閱
引言: 1.控制CCD每一秒擷取4張畫面...且 Timer1->Interval:=1000/4 ; void __fastcall TForm1::Timer1Timer(TObject *Sender) { capGrabFrameNoStop(vcHWND); } 2.每一張都要放在記憶體中作處理... 請問要做什麼處理
1. 這樣的寫法是寫死的...不知要如何才能在程式執行時能直接選擇要的張數...本站是有一個delphi的範例...但是我看不懂... 2.離散小波轉換...就是將記憶體中每一點做一些加加減減...
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-18 15:57:42 IP:218.162.xxx.xxx 未訂閱
引言: arnotsay: 是那一篇
http://delphi.ktop.com.tw/topic.php?topic_id=25489 ...這一篇
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-18 16:12:57 IP:218.162.xxx.xxx 未訂閱
引言: a sir: 你所說的那一篇 是存成 avi 視訊檔 跟你所要的好像不同?
我之後也要以每秒四格存成 avi 視訊檔..所以用得到... 然而他裡面的'設定速度'...不能把他改成.... ex.每秒四張..但不存成avi..改放在記憶體中嗎?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-18 16:32:53 IP:61.218.xxx.xxx 未訂閱
//StartCapture................................     TCAPTUREPARMS CapParms;       capCaptureGetSetup(fhCapWnd, &CapParms, sizeof(TCAPTUREPARMS));       capFileSetCaptureFile(fhCapWnd,fCapVideoFileName);       CapParms.dwRequestMicroSecPerFrame = fmicrosecpframe;    CapParms.fLimitEnabled    = BOOL(FCapTimeLimit);    CapParms.wTimeLimit       = fCapTimeLimit;    CapParms.fCaptureAudio    = fCapAudio;    CapParms.fMCIControl      = FALSE;    CapParms.fYield           = TRUE;    CapParms.vKeyAbort        = VK_ESCAPE;    CapParms.fAbortLeftMouse  = FALSE;    CapParms.fAbortRightMouse = FALSE;       if (CapParms.fLimitEnabled)  // Calculate Indexsize     {        CapParms.dwIndexSize= frameRate*FCapTimeLimit; // For Video Frames           }     else     {                If (CapParms.dwIndexSize = 0)     // Default Value         {           CapParms.DwIndexSize = 100000 // Value bigger then default for larger Videos         }         else         {           CapParms.dwIndexSize = findexSize; // IndexSize by user         };     };       if (CapParms.dwIndexSize < 1800 )   CapParms.dwIndexSize= 1800;  // Limit Control    If (CapParms.dwIndexSize > 324000 ) CapParms.dwIndexSize= 324000;       capCaptureSetSetup(fhCapWnd, &CapParms, sizeof(TCAPTUREPARMS));         if (CapToFile )     result= capCaptureSequence(fhCapWnd)    else     result= capCaptureSequenceNoFile(fhCapWnd);              //........................................... //StopCapture;   CapCaptureStop(fhcapwnd);         發表人 - cmf 於 2003/02/18 17:03:03 發表人 - cmf 於 2003/02/18 17:13:43
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-18 16:55:16 IP:218.162.xxx.xxx 未訂閱
引言: //StartCapture................................ 發表人 - cmf 於 2003/02/18 16:42:40
我看不太懂DELPHI的語法....沒關係..我研究看看..這是每一秒四張並放在記憶體的範例嗎?謝謝喔..
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-18 17:49:14 IP:218.162.xxx.xxx 未訂閱
引言: a sir: 你有看到 delphi 語法嗎
好奇怪...回到我信箱的信有delphi的語法...跟網頁上的有幾行不依樣.. 謝謝你...我研究看看...
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-18 18:09:08 IP:218.162.xxx.xxx 未訂閱
引言:
引言: a sir: 你有看到 delphi 語法嗎
好奇怪...回到我信箱的信有delphi的語法...跟網頁上的有幾行不依樣.. 謝謝你...我研究看看...
怎麼改都跟我說 undefined symbol 'TCAPTUREPARMS'
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-18 18:38:20 IP:61.70.xxx.xxx 未訂閱
把這一個 "TCAPTUREPARMS" 改成 跟 你的 vfw.h 內的 所定的名稱一致
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-18 19:09:03 IP:218.162.xxx.xxx 未訂閱
引言: 把這一個 "TCAPTUREPARMS" 改成 跟 你的 vfw.h 內的 所定的名稱一致
老實說..我幾乎都看不懂...而且編譯時錯誤20幾個...
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-02-18 19:48:36 IP:218.162.xxx.xxx 未訂閱
引言: 林桑: "老實說..我幾乎都看不懂...而且編譯時錯誤20幾個..." 加油 加油 那一行看不懂?
capFileSetCaptureFile(fhCapWnd,fCapVideoFileName); 檔名要怎麼設呢? CapParms.dwRequestMicroSecPerFrame = fmicrosecpframe; 這行也不能編譯 他的程式...我剛試了一下...不管設定一秒幾張..好像存起來的avi檔..撥放起來都像每秒30張一樣很順...
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-02-18 20:03:30 IP:61.70.xxx.xxx 未訂閱
string fCapVideoFileName; fCapVideoFileName="c:\c.avi"; capFileSetCaptureFile(fhCapWnd,(long)fCapVideoFileName.c_str());    CapParms.dwRequestMicroSecPerFrame = 這裡是設定張數 //dwRequestMicroSecPerFrame //Requested frame rate, in microseconds. The default value is 66667, //which corresponds to 15 frames per second. 發表人 - cmf 於 2003/02/18 20:15:11
------
︿︿
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-02-18 22:06:31 IP:140.135.xxx.xxx 未訂閱
引言:
引言: 把這一個 "TCAPTUREPARMS" 改成 跟 你的 vfw.h 內的 所定的名稱一致
老實說..我幾乎都看不懂...而且編譯時錯誤20幾個...
TCAPTUREPARMS 改成 CAPTUREPARMS
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-02-18 22:16:32 IP:218.162.xxx.xxx 未訂閱
引言: string fCapVideoFileName; fCapVideoFileName="c:\c.avi"; capFileSetCaptureFile(fhCapWnd,(long)fCapVideoFileName.c_str()); 發表人 - cmf 於 2003/02/18 20:15:11
CapParms.dwRequestMicroSecPerFrame = 這裡是設定張數 //dwRequestMicroSecPerFrame //Requested frame rate, in microseconds. The default value is 66667, //which corresponds to 15 frames per second. 你這些字的意思是66667 等於每秒擷取15張嗎??.. 那每秒擷取四張就是 (66667/15)*4 嗎?
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-02-18 22:26:24 IP:218.162.xxx.xxx 未訂閱
引言: string fCapVideoFileName; fCapVideoFileName="c:\c.avi"; capFileSetCaptureFile(fhCapWnd,(long)fCapVideoFileName.c_str()); 發表人 - cmf 於 2003/02/18 20:15:11
我如果只要設定擷取張數..以下是不是不用寫? CapParms.fLimitEnabled = BOOL(FCapTimeLimit); CapParms.wTimeLimit = fCapTimeLimit; CapParms.fCaptureAudio = fCapAudio; CapParms.fMCIControl = FALSE; CapParms.fYield = TRUE; CapParms.vKeyAbort = VK_ESCAPE; CapParms.fAbortLeftMouse = FALSE; CapParms.fAbortRightMouse = FALSE;
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-02-18 22:44:49 IP:61.70.xxx.xxx 未訂閱
CapParms.dwRequestMicroSecPerFrame = 這裡是設定張數  //dwRequestMicroSecPerFrame  //Requested frame rate, in microseconds. The default value is 66667,  //which corresponds to 15 frames per second.     你這些字的意思是66667 等於每秒擷取15張嗎??.. 那每秒擷取四張就是 (66667/15)*4 嗎?     1 秒 = 1000000 microseconds 66667= 1000000 microseconds/15 張 所以 CapParms.dwRequestMicroSecPerFrame =1000000 microseconds/4 張 發表人 - cmf 於 2003/02/19 09:52:11
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-02-18 23:00:49 IP:218.162.xxx.xxx 未訂閱
引言: microseconds = 1000000 秒 66667= 1000000 秒/15 張 所以 CapParms.dwRequestMicroSecPerFrame =1000000 秒/4 張
可是我設定1000000/1(每秒一張) 和1000000/30(每秒30張) 所抓出來的avi 檔..撥放起來都依樣順呢?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-02-18 23:04:49 IP:61.70.xxx.xxx 未訂閱
我如果只要設定擷取張數..以下是不是不用寫? CapParms.fLimitEnabled = BOOL(FCapTimeLimit); CapParms.wTimeLimit = fCapTimeLimit; CapParms.fCaptureAudio = fCapAudio; CapParms.fMCIControl = FALSE; CapParms.fYield = TRUE; CapParms.vKeyAbort = VK_ESCAPE; CapParms.fAbortLeftMouse = FALSE; CapParms.fAbortRightMouse = FALSE;     如果不設定 則就是原來的設定值 但你還是要了解阿 CapParms.fLimitEnabled = 是否 使用 時間極限 CapParms.wTimeLimit = 設定 時間長度 CapParms.fCaptureAudio = 是否 捕捉聲音 CapParms.fMCIControl = FALSE; //是否使用 mci Control CapParms.fYield = TRUE; //The default value is FALSE CapParms.vKeyAbort = VK_ESCAPE; // 按 esc key 結束 CapParms.fAbortLeftMouse = FALSE; //是否 按 滑鼠 左鍵 結束 CapParms.fAbortRightMouse = FALSE; //是否 按 滑鼠 右鍵 結束
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-02-18 23:13:34 IP:61.70.xxx.xxx 未訂閱
可是我設定1000000/1(每秒一張) 和1000000/30(每秒30張) 所抓出來的avi 檔..撥放起來都依樣順呢?     你可以是是看 在 1 秒中 錄30個不同場景 看是否一樣
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-02-18 23:27:14 IP:218.162.xxx.xxx 未訂閱
引言: 可是我設定1000000/1(每秒一張) 和1000000/30(每秒30張) 所抓出來的avi 檔..撥放起來都依樣順呢? 你可以是是看 在 1 秒中 錄30個不同場景 看是否一樣
If (CapParms.dwIndexSize = 0) // Default Value { CapParms.DwIndexSize = 100000 // 這個100000是怎麼決定的呀? } else { CapParms.dwIndexSize = findexSize; // }; }; if (CapParms.dwIndexSize < 1800 ) CapParms.dwIndexSize= 1800; // 以下這三行不是很懂.....Limit Control If (CapParms.dwIndexSize > 324000 ) CapParms.dwIndexSize= 324000;
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-02-18 23:35:44 IP:218.162.xxx.xxx 未訂閱
引言: 可是我設定1000000/1(每秒一張) 和1000000/30(每秒30張) 所抓出來的avi 檔..撥放起來都依樣順呢? 你可以是是看 在 1 秒中 錄30個不同場景 看是否一樣
這個我等一下在試... 但是擷取30張和1張所錄的檔案大小幾乎一樣... 不是應該差30倍嗎?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-02-18 23:52:28 IP:61.70.xxx.xxx 未訂閱
明天再回打你.....俺要去睡覺了
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-02-19 10:15:51 IP:61.218.xxx.xxx 未訂閱
//dwIndexSize //Maximum number of index entries in an AVI file. Values range from 1800 to 324,000. //If set to 0, a default value of 34,952 (32K frames plus a proportional number of audio // buffers) is used. //Each video frame or buffer of waveform-audio data uses one index entry. The value of //this entry establishes a limit for the number of frames or audio buffers that can be //captured. else { //如果是零的話 default value of 34,952 (32K frames plus a proportional number of audio // buffers) is used. If (CapParms.dwIndexSize = 0) { CapParms.DwIndexSize = 100000; // Value bigger then default for larger Videos } else { CapParms.dwIndexSize = findexSize; // IndexSize by user }; }; //dwIndexSize 有效範圍 1800 至 324000 if (CapParms.dwIndexSize < 1800 ) CapParms.dwIndexSize= 1800; // Limit Control If (CapParms.dwIndexSize > 324000 ) CapParms.dwIndexSize= 324000; capCaptureSetSetup(fhCapWnd, &CapParms, sizeof(CAPTUREPARMS)); if (CapToFile ) result= capCaptureSequence(fhCapWnd) // 存到 檔案 else result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-02-19 12:50:30 IP:218.162.xxx.xxx 未訂閱
引言: if (CapToFile ) result= capCaptureSequence(fhCapWnd) // 存到 檔案 else result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案
謝謝你詳細的解說..我終於把這篇搞懂了...但是還有二個問題... 1.result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案...那他會放在記憶體什麼地方? 如何叫用??? 2.我擷取30張和1張所錄的檔案大小幾乎一樣... 不是應該差30倍嗎?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#25 引用回覆 回覆 發表時間:2003-02-19 14:46:49 IP:61.218.xxx.xxx 未訂閱
1.result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案...那他會放在記憶體什麼地方? 如何叫用??? SendMessage(fhcapwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0,(long)&VideoStreamCallbackProc); 2.我擷取30張和1張所錄的檔案大小幾乎一樣... 不是應該差30倍嗎? 俺不知 你的參數設定 及 執行的程序 所以無法知到為什麼會這樣
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#26 引用回覆 回覆 發表時間:2003-02-19 20:12:25 IP:218.162.xxx.xxx 未訂閱
引言: 2.我擷取30張和1張所錄的檔案大小幾乎一樣... 不是應該差30倍嗎? 俺不知 你的參數設定 及 執行的程序 所以無法知到為什麼會這樣
我的程式如下..先開啟ccd... hCapWnd=capCreateCaptureWindow("My Capture Window", WS_CHILD | WS_VISIBLE ,0, 0, 320, 240,Panel1->Handle, 0); capDriverConnect (hCapWnd,0) ; capOverlay(hCapWnd, true); capPreviewRate(hCapWnd,25); capPreview(hCapWnd,TRUE); 存檔............ CAPTUREPARMS CapParms; capCaptureGetSetup(hCapWnd, &CapParms, sizeof(CAPTUREPARMS)); CapParms.dwRequestMicroSecPerFrame = 1000000/1;//每秒一畫面 capCaptureSetSetup(hCapWnd, &CapParms, sizeof(CAPTUREPARMS)); capFileSetCaptureFile(hCapWnd,"c:\\test.avi"); capCaptureSequence(hCapWnd); 我只有這樣寫... 不知道有什麼地方要改呢?
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#27 引用回覆 回覆 發表時間:2003-02-19 20:52:43 IP:218.162.xxx.xxx 未訂閱
引言: 1.result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案...那他會放在記憶體什麼地方? 如何叫用??? SendMessage(fhcapwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0,(long)&VideoStreamCallbackProc);
1.result= capCaptureSequenceNoFile(fhCapWnd); 我是不是要設一個變數 ..ex. int result; 2.顯示VideoStreamCallbackProc 沒有定義.....
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#28 引用回覆 回覆 發表時間:2003-02-20 10:02:35 IP:61.218.xxx.xxx 未訂閱
void __fastcall TForm1::InitCaptureWindows() { hCapWnd=capCreateCaptureWindow("My Capture Window", WS_CHILD | WS_VISIBLE ,0, 0, 320, 240,Panel1->Handle, 0); capDriverConnect (hCapWnd,0) ; capOverlay(hCapWnd, true); capPreviewRate(hCapWnd,25); capPreview(hCapWnd,TRUE); } // void __fastcall TForm1::StartButtonClick(TObject *Sender) { CAPTUREPARMS CapParms; capCaptureGetSetup(hCapWnd, &CapParms, sizeof(CAPTUREPARMS)); CapParms.dwRequestMicroSecPerFrame = 1000000/1;//每秒一畫面 CapParms.fLimitEnabled = FALSE; CapParms.fCaptureAudio = FALSE; CapParms.fMCIControl = FALSE; CapParms.fYield = TRUE; CapParms.vKeyAbort = VK_ESCAPE; CapParms.fAbortLeftMouse = FALSE; CapParms.fAbortRightMouse = FALSE; if (CapParms.dwIndexSize < 1800 ) CapParms.dwIndexSize= 1800; // Limit Control If (CapParms.dwIndexSize > 324000 ) CapParms.dwIndexSize= 324000; capCaptureSetSetup(hCapWnd, &CapParms, sizeof(CAPTUREPARMS)); capFileSetCaptureFile(hCapWnd,"c:\\test.avi"); capCaptureSequence(hCapWnd); } void __fastcall TForm1::StopButtonClick(TObject *Sender) { CAPSTATUS driverstatus; capGetStatus(hCapWnd,&driverstatus, sizeof(CAPSTATUS)) ; if (fpDriverStatus.fCapturingNow ) { CapCaptureStop(hCapWnd); } }
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#29 引用回覆 回覆 發表時間:2003-02-20 12:39:57 IP:218.162.xxx.xxx 未訂閱
引言: if (CapParms.dwIndexSize < 1800 ) CapParms.dwIndexSize= 1800; // Limit Control If (CapParms.dwIndexSize > 324000 ) CapParms.dwIndexSize= 324000; capCaptureSetSetup(hCapWnd, &CapParms, sizeof(CAPTUREPARMS)); capFileSetCaptureFile(hCapWnd,"c:\\test.avi"); capCaptureSequence(hCapWnd); }
問題出在我少了這些這定..對嗎?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#30 引用回覆 回覆 發表時間:2003-02-20 12:47:54 IP:61.218.xxx.xxx 未訂閱
問題出在我少了這些這定..對嗎? 你說呢 建議: 請先將 vfw sdk 所有的 function & Message & Parms "使用說明" 看懂
------
︿︿
arnotsay
一般會員


發表:23
回覆:79
積分:20
註冊:2003-02-03

發送簡訊給我
#31 引用回覆 回覆 發表時間:2003-02-20 12:50:45 IP:218.162.xxx.xxx 未訂閱
引言: 1.result= capCaptureSequenceNoFile(fhCapWnd); // 不存到 檔案...那他會放在記憶體什麼地方? 如何叫用??? SendMessage(fhcapwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0,(long)&VideoStreamCallbackProc);
1.result= capCaptureSequenceNoFile(fhCapWnd); 我是不是要設一個變數 ..ex. int result; 2.顯示VideoStreamCallbackProc 沒有定義.....是不是要設定.. xxxx VideoStreamCallbackProc;取得位址 那xxxx 是什麼呢?
[<<] [1] [2] [>>]
系統時間:2024-05-01 7:47:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!