DIB.h
上传用户:yipeng6868
上传日期:2013-02-16
资源大小:222k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // DIB.h: interface for the DIB class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DIB_H__A2ADDB4C_F0D1_4301_B08F_262BB56BC373__INCLUDED_)
  5. #define AFX_DIB_H__A2ADDB4C_F0D1_4301_B08F_262BB56BC373__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #define HDIB  HANDLE 
  10. #define RADIUS  12
  11. #define m_HEIGHT 600
  12. #define m_WIDTH 600
  13. #define AREAPIXEL 600
  14. #define Wcb  46.97
  15. #define WLcb  23
  16. #define WHcb  14
  17. #define Wcr  38.76
  18. #define WLcr  20
  19. #define WHcr  10
  20. #define Kl  125
  21. #define Kh  188
  22. #define Ymin  16
  23. #define Ymax  235
  24. #define ImgRange 600
  25. class DIB  
  26. {
  27. public:
  28. bool    lab[ImgRange][ImgRange];
  29. int lenth;
  30. void    Erasion2(HANDLE hDIB);
  31. void    MouseMap(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  32. void    EyeMapb(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  33. void    EyeMapR(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  34. void    Erasion(HANDLE hDIB);
  35. void    RgbtoYcb(HANDLE hDIB, LPBYTE lpYcb);
  36. void    ErasionFalseArea(HANDLE hDIB);
  37. void    FaceLocate(HANDLE hDIB, CRect faceLocation[10], int &faceNum);
  38. void    EyeMapL(LPBYTE lpRgb, WORD wBytesPerLine, CRect faceLocation);
  39. void    eyeMap(LPBYTE lpResult, bool eyemapc[][ImgRange], bool eyemapl[][ImgRange], bool lab[][ImgRange], WORD wBytesPerLine, CRect faceLocation);
  40. void    RecursiveCal(LPBYTE lpData, int y, int x, WORD wBytesPerLine, int &pixelNum, int num);
  41. void    EyeMapC(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  42. void    RecursiveLocateRect(LPBYTE lpData,WORD wBytesPerLine, int y, int x, int num, CRect &faceRect);
  43. void    faceear(LPBYTE lpYcc, WORD wBytesPerLine, int height,int width, bool flag[ImgRange][ImgRange]);
  44. int     _WCr(int Y);
  45. int     _Cr(int Y);
  46. int     _WCb(int Y);
  47. void    YccTransform(LPBYTE lpYcc,WORD wBytesPerLine,int height,int width);
  48. int     _Cb(int Y);
  49. LPBYTE    YcctoRgb(LPBYTE lpYcc,WORD wBytesPerLine,int height,int width);
  50. BOOL      FaceModeling(int Cr,int Cb);
  51.     BOOL      MatchImportantPoint(HANDLE hDIB,int CharaterInfo[RADIUS*2+1][RADIUS*2+1][3],CPoint *ImPoint);
  52. HANDLE    CopyHandle(HANDLE hSrc);
  53. BOOL      SaveDIB(HDIB hDib, CFile& file);
  54. CPoint   SearchInteriorPoint(CPoint Point,LPBYTE lpDIBBits,WORD wBytesPerLine);
  55. HDIB      LoadDIB(LPCTSTR lpFileName);
  56. HDIB      ReadDIBFile(HANDLE hFile);
  57. BOOL      PaintDIBTrue(HDC hDC,LPRECT lpDCRect,HANDLE hDIB,LPRECT lpDIBRect,DWORD dwRop);
  58. WORD      BytePerLine(HANDLE hDIB);
  59. HDIB      ToGray(HANDLE hDIB);
  60. LPBYTE    FindDIBBits(HANDLE hDIB);
  61. long   PixelOffset(int i,int j,WORD wBytePerLine);
  62. int   BOUND(int a ,int b ,int rgb);
  63. void    WhiteBlack(HANDLE hDIB,unsigned n);
  64. DIB();
  65. virtual ~DIB();
  66. public :
  67. void DdaLine(CPoint from,CPoint end,LPBYTE lpData,WORD wBytesPerLine);
  68. void EllipseFace(HANDLE hDIB,CPoint mouth,CPoint eye1,CPoint eye2);
  69. void EyeCenter(HANDLE hDIB, CRect faceLocation, CPoint &eye1,CPoint &eye2);
  70. void MouthCenter(HANDLE hDIB, CRect faceLocation, CPoint &mouthLocation);
  71. void DeleteScatePoint(HANDLE hDIB);
  72. void DeleteFasleEye(HANDLE hDIB,CRect);
  73. void Dilation(HANDLE hDIB);
  74. BOOL LightingCompensate(HANDLE hDIB);
  75. BOOL IsScaterPoint(int x,int y,int width,int height,LPBYTE lpData,WORD wBytesPerLine,int threshold,bool lab[m_HEIGHT][m_WIDTH]);
  76. int width;
  77. int height;
  78. private:
  79. };
  80. #endif // !defined(AFX_DIB_H__A2ADDB4C_F0D1_4301_B08F_262BB56BC373__INCLUDED_)