📄 palmpriintrec.cpp
字号:
*(pcheck+2+9)=*(pD+(nlie+(nhang+1)*nL)*nrgb+2);//R
*(pcheck+0+12)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+0);//B
*(pcheck+1+12)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+1);//G
*(pcheck+2+12)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+2);//R
*(pcheck+0+15)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+0);//B
*(pcheck+1+15)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+1);//G
*(pcheck+2+15)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+2);//R
*(pcheck+0+18)=*(pD+(nlie+(nhang+2)*nL)*nrgb+0);//B
*(pcheck+1+18)=*(pD+(nlie+(nhang+2)*nL)*nrgb+1);//G
*(pcheck+2+18)=*(pD+(nlie+(nhang+2)*nL)*nrgb+2);//R
*(pcheck+0+21)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+0);//B
*(pcheck+1+21)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+1);//G
*(pcheck+2+21)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+2);//R
*(pcheck+0+24)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+0);//B
*(pcheck+1+24)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+1);//G
*(pcheck+2+24)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+2);//R
//////////////////////////////////////////////////////////////////////////
*(pbk+0)=*(pback+(nlie+nhang*nL)*nrgb+0);//B
*(pbk+1)=*(pback+(nlie+nhang*nL)*nrgb+1);//G
*(pbk+2)=*(pback+(nlie+nhang*nL)*nrgb+2);//R
*(pbk+0+3)=*(pback+(nlie+1+nhang*nL)*nrgb+0);//B
*(pbk+1+3)=*(pback+(nlie+1+nhang*nL)*nrgb+1);//G
*(pbk+2+3)=*(pback+(nlie+1+nhang*nL)*nrgb+2);//R
*(pbk+0+6)=*(pback+(nlie+2+nhang*nL)*nrgb+0);//B
*(pbk+1+6)=*(pback+(nlie+2+nhang*nL)*nrgb+1);//G
*(pbk+2+6)=*(pback+(nlie+2+nhang*nL)*nrgb+2);//R
*(pbk+0+9)=*(pback+(nlie+(nhang+1)*nL)*nrgb+0);//B
*(pbk+1+9)=*(pback+(nlie+(nhang+1)*nL)*nrgb+1);//G
*(pbk+2+9)=*(pback+(nlie+(nhang+1)*nL)*nrgb+2);//R
*(pbk+0+12)=*(pback+(nlie+1+(nhang+1)*nL)*nrgb+0);//B
*(pbk+1+12)=*(pback+(nlie+1+(nhang+1)*nL)*nrgb+1);//G
*(pbk+2+12)=*(pback+(nlie+1+(nhang+1)*nL)*nrgb+2);//R
*(pbk+0+15)=*(pback+(nlie+2+(nhang+1)*nL)*nrgb+0);//B
*(pbk+1+15)=*(pback+(nlie+2+(nhang+1)*nL)*nrgb+1);//G
*(pbk+2+15)=*(pback+(nlie+2+(nhang+1)*nL)*nrgb+2);//R
*(pbk+0+18)=*(pback+(nlie+(nhang+2)*nL)*nrgb+0);//B
*(pbk+1+18)=*(pback+(nlie+(nhang+2)*nL)*nrgb+1);//G
*(pbk+2+18)=*(pback+(nlie+(nhang+2)*nL)*nrgb+2);//R
*(pbk+0+21)=*(pback+(nlie+1+(nhang+2)*nL)*nrgb+0);//B
*(pbk+1+21)=*(pback+(nlie+1+(nhang+2)*nL)*nrgb+1);//G
*(pbk+2+21)=*(pback+(nlie+1+(nhang+2)*nL)*nrgb+2);//R
*(pbk+0+24)=*(pback+(nlie+2+(nhang+2)*nL)*nrgb+0);//B
*(pbk+1+24)=*(pback+(nlie+2+(nhang+2)*nL)*nrgb+1);//G
*(pbk+2+24)=*(pback+(nlie+2+(nhang+2)*nL)*nrgb+2);//R
//计算夹角
double tprlt=hdg.cacuangle(pcheck,pbk,12);
if (dthreshold>hdg.cacuangle(pcheck,pbk,12))
{
*(prlt+(nlie+nhang*nL)*nrgb+0)=0;
*(prlt+(nlie+nhang*nL)*nrgb+1)=0;
*(prlt+(nlie+nhang*nL)*nrgb+2)=0;
*(prlt+(nlie+1+nhang*nL)*nrgb+0)=0;
*(prlt+(nlie+1+nhang*nL)*nrgb+1)=0;
*(prlt+(nlie+1+nhang*nL)*nrgb+2)=0;
*(prlt+(nlie+2+nhang*nL)*nrgb+0)=0;
*(prlt+(nlie+2+nhang*nL)*nrgb+1)=0;
*(prlt+(nlie+2+nhang*nL)*nrgb+2)=0;
*(prlt+(nlie+(nhang+1)*nL)*nrgb+0)=0;
*(prlt+(nlie+(nhang+1)*nL)*nrgb+1)=0;
*(prlt+(nlie+(nhang+1)*nL)*nrgb+2)=0;
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+0)=0;
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+1)=0;
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+2)=0;
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+0)=0;
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+1)=0;
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+2)=0;
*(prlt+(nlie+(nhang+2)*nL)*nrgb+0)=0;
*(prlt+(nlie+(nhang+2)*nL)*nrgb+1)=0;
*(prlt+(nlie+(nhang+2)*nL)*nrgb+2)=0;
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+0)=0;
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+1)=0;
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+2)=0;
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+0)=0;
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+1)=0;
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+2)=0;
}
else
{
*(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);
*(prlt+(nlie+1+nhang*nL)*nrgb+0)=*(pD+(nlie+1+nhang*nL)*nrgb+0);
*(prlt+(nlie+1+nhang*nL)*nrgb+1)=*(pD+(nlie+1+nhang*nL)*nrgb+1);
*(prlt+(nlie+1+nhang*nL)*nrgb+2)=*(pD+(nlie+1+nhang*nL)*nrgb+2);
*(prlt+(nlie+2+nhang*nL)*nrgb+0)=*(pD+(nlie+2+nhang*nL)*nrgb+0);
*(prlt+(nlie+2+nhang*nL)*nrgb+1)=*(pD+(nlie+2+nhang*nL)*nrgb+1);
*(prlt+(nlie+2+nhang*nL)*nrgb+2)=*(pD+(nlie+2+nhang*nL)*nrgb+2);
*(prlt+(nlie+(nhang+1)*nL)*nrgb+0)=*(pD+(nlie+(nhang+1)*nL)*nrgb+0);
*(prlt+(nlie+(nhang+1)*nL)*nrgb+1)=*(pD+(nlie+(nhang+1)*nL)*nrgb+1);
*(prlt+(nlie+(nhang+1)*nL)*nrgb+2)=*(pD+(nlie+(nhang+1)*nL)*nrgb+2);
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+0)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+0);
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+1)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+1);
*(prlt+(nlie+1+(nhang+1)*nL)*nrgb+2)=*(pD+(nlie+1+(nhang+1)*nL)*nrgb+2);
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+0)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+0);
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+1)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+1);
*(prlt+(nlie+2+(nhang+1)*nL)*nrgb+2)=*(pD+(nlie+2+(nhang+1)*nL)*nrgb+2);
*(prlt+(nlie+(nhang+2)*nL)*nrgb+0)=*(pD+(nlie+(nhang+2)*nL)*nrgb+0);
*(prlt+(nlie+(nhang+2)*nL)*nrgb+1)=*(pD+(nlie+(nhang+2)*nL)*nrgb+1);
*(prlt+(nlie+(nhang+2)*nL)*nrgb+2)=*(pD+(nlie+(nhang+2)*nL)*nrgb+2);
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+0)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+0);
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+1)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+1);
*(prlt+(nlie+1+(nhang+2)*nL)*nrgb+2)=*(pD+(nlie+1+(nhang+2)*nL)*nrgb+2);
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+0)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+0);
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+1)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+1);
*(prlt+(nlie+2+(nhang+2)*nL)*nrgb+2)=*(pD+(nlie+2+(nhang+2)*nL)*nrgb+2);
}
}
}
delete []pcheck;
delete []pbk;
}
void CPalmPriintRec::BGR2GRAY(BYTE *pS, BYTE *pD)
{
double bB,bG,bR;
for (int nIndl=0;nIndl<nL;nIndl++)
{
for (int nIndh=0;nIndh<nH;nIndh++)
{
bB=(double)*(pS+nIndh+nIndl*nH*nrgb);
bG=(double)*(pS+nIndh+nIndl*nH*nrgb+1);
bR=(double)*(pS+nIndh+nIndl*nH*nrgb+2);
*(pD+nIndh+nIndl*nH)=(BYTE)(0.212671*bR + 0.715160*bG + 0.072169*bB);
}
}
}
/******************************************************************************
* RGB转换到YUV
******************************************************************************/
void CPalmPriintRec::RGB2YUV(double *Y, double *U, double *V, double B, double G, double R)
{
//先从0~255转换为0~1;计算完后从结果到0~255
*Y=0.299*R+0.587*G+0.114*B;//---------取值范围:0~255
*U=-0.148*R-0.289*G+0.437*B;//--------取值范围:-0.437~0.437-----可能为0
*V=0.615*R-0.515*G-0.1*B;//-----------取值范围:-0.615~0.615
}
/******************************************************************************
* RGB转换到YUV
******************************************************************************/
void CPalmPriintRec::RGB2YIQ(double *Y, double *I, double *Q, double B, double G, double R)
{
*Y=0.299*R+0.587*G+0.114*B;//---------取值范围:0~255
*I=0.596*R-0.274*G-0.322*B;//---------取值范围:-0.596~0.596
*Q=0.211*R-0.523*G+0.312*B;//---------取值范围:-0.523~0.523
}
void CPalmPriintRec::displayDB(BYTE *pD, HWND hd,CString str)
{
BITMAPINFOHEADER bih;
memset(&bih,0,sizeof(BITMAPINFOHEADER));
bih.biSize=sizeof(bih);
bih.biWidth=nL;
bih.biHeight=nH;
bih.biPlanes=1;
bih.biBitCount=24;
if (!hd || !pD)
return;
RECT rc;
::GetWindowRect( hd, &rc );
long lStillWidth = rc.right - rc.left;
long lStillHeight = rc.bottom - rc.top;
HDC hdcStill = GetDC( hd );
PAINTSTRUCT ps;
BeginPaint(hd, &ps);
SetStretchBltMode(hdcStill, COLORONCOLOR);
StretchDIBits( hdcStill, 0, 0,
lStillWidth, lStillHeight,
0, 0, nL, nH,
pD,
(BITMAPINFO*) &bih,
DIB_RGB_COLORS,
SRCCOPY );
EndPaint(hd, &ps);
ReleaseDC( hd, hdcStill );
//////////////////////////////////////////////////////////////////////////
long lbuffersize=nH*nL*nrgb;
HANDLE hr=(CreateFile( (LPCSTR)str,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
NULL,
NULL));
if (SUCCEEDED(hr))
{
BITMAPFILEHEADER bfh;
memset(&bfh,0,sizeof(BITMAPFILEHEADER));
bfh.bfType='MB';
bfh.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+lbuffersize;
bfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
DWORD dwWritten = 0;
WriteFile(hr,//文件句柄
&bfh,//数据块
sizeof( bfh ),//尺寸(Byte)
&dwWritten,//记录写了多少个Byte
NULL );//将FileHeader准备好
dwWritten=0;
WriteFile(hr,
&bih,
sizeof(bih),
&dwWritten,
NULL);
dwWritten=0;
WriteFile(hr,
pD,
lbuffersize,
&dwWritten,
NULL);
CloseHandle(hr);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -