2012年5月14日 星期一

98160940_黃筠庭, 座號10, HW11

課堂小作業:
TODO:
(1) 昨天做了什麼?
找尋以前學長姊的作品

(2) 今天要做什麼?
繼續利用顏色區塊來判斷手部的位置
另外google看看有沒有其他解決方案


(3) 會遇到什麼問題?
還是一直找不到想要的區塊該怎麼辦!



今日成果:
仍然只找的到灰色會白色的色階
但不能正確地找出灰色或白色


在網路上找到一個有關提取顏色的程式碼
double num,den;
double Thita,H,S,I,minRGB;
num=(2*s.val[2]-s.val[1]-s.val[0])/2.0;
den=sqrt((s.val[2]-s.val[1])*(s.val[2]-s.val[1])+(s.val[2]-s.val[0])*(s.val[1]-s.val[0]));
Thita=acos(num/den);
minRGB=_min(_min(s.val[2],s.val[1]),s.val[0]);
S = 1-3.0*minRGB/(s.val[2]+s.val[1]+s.val[0]); //这些是RGB转为HSI的公式
I = (1/3.0)*(s.val[0]+s.val[1]+s.val[2]);
if(s.val[1]>=s.val[0])
{
H = Thita;
}
else
H = 2*PI-Thita;

if (((H>=PI/4)&&(H<=PI/2))&&(S>0.)//这里是关键点,就是阈值判断H,S值,I值可以不管,&&表示且的意思,这里乱码了

{
sBuf.val[0]=sBuf.val[1]=sBuf.val[2]=255;//我要的颜色变成黑色
cvSet2D(img,i,j,sBuf);
}

else
sBuf.val[0]=sBuf.val[1]=sBuf.val[2]=0;//不是我要的颜色变成白色
cvSet2D(img,i,j,sBuf);
}
}
cvCopy(img,biimg);
cvSaveImage( image_name, img); //保存一帧图片
cvNamedWindow("image_name");
cvShowImage("image_name",img);

沒有留言:

張貼留言