使用多執行緒擷取圖片亮度 |
尚未結案
|
ytasmallmf
一般會員 發表:33 回覆:39 積分:14 註冊:2008-12-11 發送簡訊給我 |
小弟開一個TimerThread去計算某張圖片的亮度值,剛開使很順但是到最後會卡住
所以要請教有經驗的大大是不是哪個地方我沒注意到的。 [code cpp] long TCatchCamera::GetLightValue(int _OrgX, int _OrgY) { Byte *ptr=NULL; double _ulAddR=0,_ulAddG=0,_ulAddB=0,_ulAddI=0; int Addcount=0; long _lLightValue=0; long _lXlength,_lYlength; if(CatchCamera->CheckBox1->Checked==true) { _lXlength=10; _lYlength=10; } else { _lXlength=(_OrgX _lViewPercent)-(_OrgX-_lViewPercent); _lYlength=(_OrgY (int)(_lViewPercent*0.75))-(_OrgY-(int)(_lViewPercent*0.75)); } Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); CatchCamera->EzCapCamera1->CapBitmapFrame(pBitmap); for (int y = _OrgY-(int)_lYlength; y < _OrgY (int)_lYlength; y ) { ptr = (Byte *)pBitmap->ScanLine[y]; for (int x = _OrgX-(int)_lXlength; x < _OrgX (int)_lXlength; x ) { _ulAddB=GetBValue(ptr[x]); _ulAddG=GetGValue(ptr[x]); _ulAddR=GetRValue(ptr[x]); _ulAddI=_ulAddI (_ulAddR _ulAddG _ulAddB)/3; //計算Intensity(亮度) } } _lLightValue=_ulAddI/(_lXlength*_lYlength); delete pBitmap; return _lLightValue; } void __fastcall TTimerThread::Execute() { SetName(); //---- Place thread code here ---- while(1) { // Sleep(100); if(CatchCamera->CheckBox1->Checked==true) { // if(((CatchCamera->_MouseX 10 < 640) && (CatchCamera->_MouseX-10 > 0)) // && ((CatchCamera->_MouseY 10 < 480) && (CatchCamera->_MouseY-10 > 0))) // { // CatchCamera->_lLightValue[0]=CatchCamera->GetLightValue(CatchCamera->_MouseX, // CatchCamera->_MouseY); // } } else { CatchCamera->GetLightValue(); } } } [/code] 編輯記錄
ytasmallmf 重新編輯於 2009-01-05 16:25:47, 註解 無‧
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
當你執行緒有用到VCL元件的話,會有同步的問題,你新增的執行緒裡面會有這段說明
// Important: Methods and properties of objects in VCL can only be // used in a method called using Synchronize, for example: // // Synchronize(UpdateCaption); // // where UpdateCaption could look like: // // void __fastcall UsbThread::UpdateCaption() // { // Form1->Caption = "Updated in a thread"; // } |
ytasmallmf
一般會員 發表:33 回覆:39 積分:14 註冊:2008-12-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |