DIB.h
上传用户:sdsuchuang
上传日期:2013-01-12
资源大小:2228k
文件大小:4k
源码类别:

图形图像处理

开发平台:

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. #include <vfw.h>
  26. #pragma comment(lib,"vfw32.lib")
  27. class DIB  
  28. {
  29. public:
  30. bool    lab[ImgRange][ImgRange];
  31. int lenth;
  32. void    Erasion2(HANDLE hDIB);
  33. void    MouseMap(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  34. void    EyeMapb(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  35. void    EyeMapR(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  36. void    Erasion(HANDLE hDIB,int m_top,int m_bottom,int m_left,int m_right);
  37. void    RgbtoYcb(HANDLE hDIB, LPBYTE lpYcb);
  38. void    ErasionFalseArea(HANDLE hDIB);
  39. void    FaceLocate(HANDLE hDIB, CRect faceLocation[10], int &faceNum);
  40. void    EyeMapL(LPBYTE lpRgb, WORD wBytesPerLine, CRect faceLocation);
  41. void    eyeMap(LPBYTE lpResult, bool eyemapc[][ImgRange], bool eyemapl[][ImgRange], bool lab[][ImgRange], WORD wBytesPerLine, CRect faceLocation);
  42. void    RecursiveCal(LPBYTE lpData, int y, int x, WORD wBytesPerLine, int &pixelNum, int num);
  43. void    EyeMapC(LPBYTE lpRgb, const LPBYTE lpYcc,  WORD wBytesPerLine, CRect faceLocation);
  44. void    RecursiveLocateRect(LPBYTE lpData,WORD wBytesPerLine, int y, int x, int num, CRect &faceRect);
  45. void    faceear(LPBYTE lpYcc, WORD wBytesPerLine, int height,int width, bool flag[ImgRange][ImgRange]);
  46. int     _WCr(int Y);
  47. int     _Cr(int Y);
  48. int     _WCb(int Y);
  49. void    YccTransform(LPBYTE lpYcc,WORD wBytesPerLine,int height,int width);
  50. int     _Cb(int Y);
  51. LPBYTE    YcctoRgb(LPBYTE lpYcc,WORD wBytesPerLine,int height,int width);
  52. BOOL      FaceModeling(int Cr,int Cb);
  53.     BOOL      MatchImportantPoint(HANDLE hDIB,int CharaterInfo[RADIUS*2+1][RADIUS*2+1][3],CPoint *ImPoint);
  54. HANDLE    CopyHandle(HANDLE hSrc);
  55. BOOL      SaveDIB(HDIB hDib, CFile& file);
  56. CPoint   SearchInteriorPoint(CPoint Point,LPBYTE lpDIBBits,WORD wBytesPerLine);
  57. HDIB      LoadDIB(LPCTSTR lpFileName);
  58. HDIB      ReadDIBFile(HANDLE hFile);
  59.     BOOL      PaintDIBTrue1(HDC hDC,LPRECT lpDCRect,HANDLE hDIB,LPRECT lpDIBRect ,DWORD dwRop);
  60. BOOL      PaintDIBTrue(HDC hDC,LPRECT lpDCRect,HANDLE hDIB,LPRECT lpDIBRect,DWORD dwRop);
  61.     BYTE      *GetBits();
  62. WORD      BytePerLine(HANDLE hDIB);
  63. HDIB      ToGray(HANDLE hDIB);
  64. LPBYTE    FindDIBBits(HANDLE hDIB);
  65. long   PixelOffset(int i,int j,WORD wBytePerLine);
  66. int   BOUND(int a ,int b ,int rgb);
  67. void    WhiteBlack(HANDLE hDIB,unsigned n);
  68. DIB();
  69. virtual ~DIB();
  70. public :
  71. void DdaLine(CPoint from,CPoint end,LPBYTE lpData,WORD wBytesPerLine);
  72. void EllipseFace(HANDLE hDIB,CPoint mouth,CPoint eye1,CPoint eye2);
  73. void EyeCenter(HANDLE hDIB, CRect faceLocation, CPoint &eye1,CPoint &eye2);
  74. void MouthCenter(HANDLE hDIB, CRect faceLocation, CPoint &mouthLocation);
  75. void DeleteScatePoint(HANDLE hDIB);
  76. void DeleteFasleEye(HANDLE hDIB,CRect);
  77. void Dilation(HANDLE hDIB,int m_top,int m_bottom,int m_left,int m_right);
  78. BOOL LightingCompensate(HANDLE hDIB);
  79. int  GetBiBitCount();
  80. LONG GetWidth();
  81. LONG GetHeight();
  82. //////////////////////////////////////////////////////////////////////////////////
  83. /////////////////////////////////////////////////////////////////////////////////////
  84. //////////////////////////////////////////////////////////////////////////////////////
  85. BOOL Open(const char * pzFileName);
  86. void Close();
  87. operator HDRAWDIB() { return m_hDrawDib; }
  88. // BOOL IsScaterPoint(int x,int y,int width,int height,LPBYTE lpData,WORD wBytesPerLine,int threshold,bool lab[m_HEIGHT][m_WIDTH]);
  89.    //public parameters
  90.     
  91. int width;
  92. int height;
  93. BYTE *m_pDib;
  94. //////////////////////////////////////////////////////////
  95. //////////////////////////////////////////////////////////
  96. //////////////////////////////////////////////////////////
  97. BITMAPFILEHEADER bmpFileHeader;
  98. HDRAWDIB m_hDrawDib;
  99.     BYTE *m_pDibBits;
  100. private:
  101. };
  102. #endif // !defined(AFX_DIB_H__A2ADDB4C_F0D1_4301_B08F_262BB56BC373__INCLUDED_)