關於即時膚色偵測卻無法動作 |
尚未結案
|
jeff71321
一般會員 發表:6 回覆:14 積分:4 註冊:2005-01-20 發送簡訊給我 |
各位大大們..不好意思...我現在程式執行沒問題..但是當我要執行
fpVideoCallback2這個函式時他卻沒法出現正確動作
我有查到好像是因為我的r與g矩陣運算的值似乎都沒正確運算,且輸出的值都是0,但是我又都有設定他計算出來的值是浮點數。
想知道位啥會出現這樣的問題,是不是我哪邊用法錯誤,或是哪裏應該修正
這組CallFeameBack的函式我有用來做其他的演算法都可正常動作,唯獨這個函式有牽涉到浮點數的時候,卻出現黑色畫面。請各位大大幫我看看。感謝
LRESULT CALLBACK fpVideoCallback2(HWND hWndC,LPVIDEOHDR lpVHdr) { unsigned char *pData = (unsigned char *)lpVHdr->lpData; Pic2 = Form1->Image2->Picture->Bitmap; Pic2->PixelFormat=pf24bit; int i,j,sum; double r[320][240],g[320][240],f1[320][240],f2[320][240],r1,g1; double w[320][240]; for (i=239;i>=0;i--) { for (j=0;j<320;j ) { OrgBuff2[j][i][0] = *pData ; // blue OrgBuff2[j][i][1] = *pData ; // green OrgBuff2[j][i][2] = *pData ; // red } } for(i=0;i<240;i ) { for(j=0;j<320;j ) { sum=(OrgBuff2[j][i][0] OrgBuff2[j][i][1] OrgBuff2[j][i][2]); //R G B r[j][i]=(float)(OrgBuff2[j][i][2]/sum);// R/(R G B) g[j][i]=(float)(OrgBuff2[j][i][1]/sum);// G/(R G B) f1[j][i]=0.1452 (1.0743-1.376*r[j][i])*r[j][i];//膚色下界 f2[j][i]=0.1766 (0.5601-0.776*r[j][i])*r[j][i];//膚色上界 r1=(r[j][i]-0.33); g1=(g[j][i]-0.33); w[j][i]=pow(r1,2) pow(g1,2); // if (( g[j][i] < f1[j][i] )&&(w[j][i]>0.0004)&&( g[j][i] > f2[j][i])) { ShowBuff2[j][i][0]= OrgBuff2[j][i][0]; ShowBuff2[j][i][1]= OrgBuff2[j][i][1]; ShowBuff2[j][i][2]= OrgBuff2[j][i][2]; } else { ShowBuff2[j][i][0]= 0; ShowBuff2[j][i][1]= 0; ShowBuff2[j][i][2]= 0; } } } //----------------輸出------------------------------------------------ for(i=0;i<240;i ) { Pixel2=(Byte*)Pic2->ScanLine[i]; for(j=0;j<320;j ) { Pixel2[j*3 ]=ShowBuff2[j][i][2]; Pixel2[j*3 1]=ShowBuff2[j][i][1]; Pixel2[j*3 2]=ShowBuff2[j][i][0]; } } Form1->Image2->Invalidate(); return 0; } |
jeff71321
一般會員 發表:6 回覆:14 積分:4 註冊:2005-01-20 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
jeff71321
一般會員 發表:6 回覆:14 積分:4 註冊:2005-01-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |