CvxText.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //====================================================================
  2. //====================================================================
  3. //
  4. // 文件: CvxText.h
  5. //
  6. // 说明: OpenCV汉字输出
  7. //
  8. // 时间:
  9. //
  10. // 作者: chaishushan#gmail.com
  11. //
  12. //====================================================================
  13. //====================================================================
  14. #ifndef OPENCV_CVX_TEXT_2007_08_31_H
  15. #define OPENCV_CVX_TEXT_2007_08_31_H
  16. /**
  17. * \file CvxText.h
  18. * \brief OpenCV汉字输出接口
  19. *
  20. * 实现了汉字输出功能。
  21. */
  22. #include "ft2build.h"
  23. #include FT_FREETYPE_H
  24. //#include"opnecv2/opencv.hpp"
  25. #include <opencv2/opencv.hpp>
  26. class CvxText
  27. {
  28. // 禁止copy
  29. CvxText& operator=(const CvxText&);
  30. //================================================================
  31. //================================================================
  32. public:
  33. /**
  34. * 装载字库文件
  35. */
  36. CvxText(const char *freeType);
  37. virtual ~CvxText();
  38. //================================================================
  39. //================================================================
  40. /**
  41. * 获取字体。目前有些参数尚不支持。
  42. *
  43. * \param font 字体类型, 目前不支持
  44. * \param size 字体大小/空白比例/间隔比例/旋转角度
  45. * \param underline 下画线
  46. * \param diaphaneity 透明度
  47. *
  48. * \sa setFont, restoreFont
  49. */
  50. void getFont(int *type,
  51. CvScalar *size=NULL, bool *underline=NULL, float *diaphaneity=NULL);
  52. /**
  53. * 设置字体。目前有些参数尚不支持。
  54. *
  55. * \param font 字体类型, 目前不支持
  56. * \param size 字体大小/空白比例/间隔比例/旋转角度
  57. * \param underline 下画线
  58. * \param diaphaneity 透明度
  59. *
  60. * \sa getFont, restoreFont
  61. */
  62. void setFont(int *type,
  63. CvScalar *size=NULL, bool *underline=NULL, float *diaphaneity=NULL);
  64. /**
  65. * 恢复原始的字体设置。
  66. *
  67. * \sa getFont, setFont
  68. */
  69. void restoreFont();
  70. //================================================================
  71. //================================================================
  72. /**
  73. * 输出汉字(颜色默认为黑色)。遇到不能输出的字符将停止。
  74. *
  75. * \param img 输出的影象
  76. * \param text 文本内容
  77. * \param pos 文本位置
  78. *
  79. * \return 返回成功输出的字符长度,失败返回-1。
  80. */
  81. int putText(IplImage *img, const char *text, CvPoint pos);
  82. /**
  83. * 输出汉字(颜色默认为黑色)。遇到不能输出的字符将停止。
  84. *
  85. * \param img 输出的影象
  86. * \param text 文本内容
  87. * \param pos 文本位置
  88. *
  89. * \return 返回成功输出的字符长度,失败返回-1。
  90. */
  91. int putText(IplImage *img, const wchar_t *text, CvPoint pos);
  92. /**
  93. * 输出汉字。遇到不能输出的字符将停止。
  94. *
  95. * \param img 输出的影象
  96. * \param text 文本内容
  97. * \param pos 文本位置
  98. * \param color 文本颜色
  99. *
  100. * \return 返回成功输出的字符长度,失败返回-1。
  101. */
  102. int putText(IplImage *img, const char *text, CvPoint pos, CvScalar color);
  103. /**
  104. * 输出汉字。遇到不能输出的字符将停止。
  105. *
  106. * \param img 输出的影象
  107. * \param text 文本内容
  108. * \param pos 文本位置
  109. * \param color 文本颜色
  110. *
  111. * \return 返回成功输出的字符长度,失败返回-1。
  112. */
  113. int putText(IplImage *img, const wchar_t *text, CvPoint pos, CvScalar color);
  114. //================================================================
  115. //================================================================
  116. private:
  117. // 输出当前字符, 更新m_pos位置
  118. void putWChar(IplImage *img, wchar_t wc, CvPoint &pos, CvScalar color);
  119. //================================================================
  120. //================================================================
  121. private:
  122. FT_Library m_library; // 字库
  123. FT_Face m_face; // 字体
  124. //================================================================
  125. //================================================================
  126. // 默认的字体输出参数
  127. int m_fontType;
  128. CvScalar m_fontSize;
  129. bool m_fontUnderline;
  130. float m_fontDiaphaneity;
  131. //================================================================
  132. //================================================================
  133. };
  134. #endif // OPENCV_CVX_TEXT_2007_08_31_H