📄 变更内容.txt
字号:
void CPalmPriintRec::pretreat(BYTE *prlt,BYTE *pD,BYTE *pback)
{
/*统计门限:
TH_theta_1,TH_theta_2,TH_I_1,TH_I_2
*/
double TH_theta_1=38; //85;
double TH_theta_2=56; //95;
double TH_I_1=110; //8;
double TH_I_2=162; //11;
//////////////////////////////////////////////////////////////////////////
double dR,dG,dB,
R1,G1,B1,
Y,U,V,
Y1,U1,V1,
theta,
Z_y,Z_i,Z_q;
double pi=3.14159;
double kLevel=20;
//以下逐个像素进行处理
/*
灰度差别由klevel门限负责处理
背景
pback
RGB2YUV(&Y1,&U1,&V1,B1,G1,R1);
采集的照片
pD
RGB2YUV(&Y,&U,&V,dB,dG,dR);
根据灰度变化提取出一部分像素
abs(Y-Y1)≥klevel时,可以判断为可能的像素;
------------------------------------------------------
然后从颜色空间分析
肤色范围:需要参考统计值
*/
for (int nhang=0;nhang<nH;nhang++)
{
for (int nlie=0;nlie<nL;nlie++)
{
dB=*(pD+(nlie+nhang*nL)*nrgb+0);
dG=*(pD+(nlie+nhang*nL)*nrgb+1);
dR=*(pD+(nlie+nhang*nL)*nrgb+2);
RGB2YUV(&Y,&U,&V,dB,dG,dR);
RGB2YIQ(&Z_y,&Z_i,&Z_q,dB,dG,dR);
R1=*(pback+(nlie+nhang*nL)*nrgb+0);
G1=*(pback+(nlie+nhang*nL)*nrgb+1);
B1=*(pback+(nlie+nhang*nL)*nrgb+2);
//条件:是肤色,与原背景图有差别
RGB2YUV(&Y1,&U1,&V1,B1,G1,R1);
theta=180*atan(V/U)/pi;
theta=theta>=0 ? theta : 180+theta;
//______theta应该在105°到150°之间
//______I应该在30~100之间
// if ((nhang==240) && (nlie==320))
// {
// AfxMessageBox("!");
// }
if (
/*(theta>=TH_theta_1) && (theta<=TH_theta_2)
&& (Z_i>=TH_I_1) && (Z_i<=TH_I_2)
// )
&& */
(abs(dB-B1)>kLevel && abs(dG-G1)>kLevel && abs(dR-R1)>kLevel))
//同时应满足背景与前景有一定的差别
{
*(prlt+(nlie+nhang*nL)*nrgb+0)=*(pD+(nlie+nhang*nL)*nrgb+0);
*(prlt+(nlie+nhang*nL)*nrgb+1)=*(pD+(nlie+nhang*nL)*nrgb+1);
*(prlt+(nlie+nhang*nL)*nrgb+2)=*(pD+(nlie+nhang*nL)*nrgb+2);
}
else
{
*(prlt+(nlie+nhang*nL)*nrgb+0)=0;
*(prlt+(nlie+nhang*nL)*nrgb+1)=0;
*(prlt+(nlie+nhang*nL)*nrgb+2)=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -