透過TMemoryStream物件取得ccd影像 |
缺席
|
MilesWamg
一般會員 發表:18 回覆:37 積分:11 註冊:2003-02-07 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 透過TMemoryStream物件取得ccd影像,不透過 GetDC()或其他物件Canvas來取得ccd各相素資料, 但因TMemoryStream第一次使用,故還有改善空間吧!! 請各位先進告知小弟有何更佳之改善方法 因為速度不理想 程式貼於發表區 >>< face="Verdana, Arial, Helvetica">MilesWamg 你好: (1)小弟我並沒有很仔細的看你大作中的程式碼,只是執行玩玩看 ( > > 備註: <><>>>
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
MilesWamg
一般會員 發表:18 回覆:37 積分:11 註冊:2003-02-07 發送簡訊給我 |
小弟最近在測試改進此一程式之速度
但是有一個問題
將TBitmap中的ScanLine使用來劃一點陣圖理論上
速度應該很快(相對於SetPixel())
但是於此一程式有一很有趣的現象
如果加上這一行速度會下降很多.....,故不想使用如SetPixel()方式也沒辦法
請各位前輩指點迷津,謝謝!!
HWND __fastcall TRec::Get_A_Frame() { int x_cnt,y_cnt; Byte color_ptr[3],*ptr; if(FrameBuf!=0) { BufferArea->Write(FrameBuf,FrameSize); BufferArea->Position=0; for( x_cnt=Pic->Height-1;x_cnt>=0;x_cnt--) { //ptr=(Byte *)Pic->ScanLine[x_cnt];<<如果加上這一行 for( y_cnt=0;y_cntWidth;y_cnt ) { BufferArea->Read(color_ptr,3); Pic->Canvas->Pixels[y_cnt][x_cnt]=RGB(*(color_ptr 2),*(color_ptr 1),*(color_ptr)); } } BufferArea->Clear(); } return(Pic->Canvas->Handle); }發表人 - |
MilesWamg
一般會員 發表:18 回覆:37 積分:11 註冊:2003-02-07 發送簡訊給我 |
引言: 小弟最近在測試改進此一程式之速度 得到答案將TBitmap中的ScanLine使用來劃一點 如果加上這一行速度就理想了 應是像素格式的問題 如 Pic->PixelFormat=pf24bit;__fastcall TRec::TRec(HWND HWnd) { Handle=HWnd; Live=false; Pic = new Graphics::TBitmap(); Pic->Height=240; Pic->Width=320; Pic->PixelFormat=pf24bit;//加上這一行 BufferArea= new TMemoryStream(); }發表人 - >>< face="Verdana, Arial, Helvetica"> |
triop
一般會員 發表:14 回覆:15 積分:5 註冊:2005-11-08 發送簡訊給我 |
===================引 用 MilesWamg 文 章=================== 引言: 小弟最近在測試改進此一程式之速度想請問一下這裡的方法是將hand裡面的資料讀入Pic->Canvas->Handle裡面 那小弟想請問一下,如何將Pic->Canvas->Handle讀到記憶體當中呢? 可以直接讀取handle裡面的值嗎? 想請問一下要怎麼使用呢? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |