CvxText.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #ifndef PUTTEXT_H_
  3. #define PUTTEXT_H_
  4. #include <string>
  5. #include <opencv2/opencv.hpp>
  6. #include "lib_common_depence.h"
  7. using namespace std;
  8. #define font_family "宋体"
  9. #define font_size 30
  10. #define chk_width 30
  11. #define main_wdith 1430
  12. #if QQM_ADD
  13. #define max_line 3 // 每张三个示例图
  14. #else
  15. #define max_line 14
  16. #endif // QQM_ADD
  17. void GetStringSize(HDC hDC, const char* str, int* w, int* h);
  18. //获取字符串的宽高
  19. cv::Size GetTextSize(const char* str, int fontSize, const char *fn = "Arial", bool italic = false, bool underline = false);
  20. void putTextZH(cv::Mat &dst, cv::Size & rSize, const char* str, cv::Point org, cv::Scalar color, int fontSize,
  21. const char *fn = "Arial", bool italic = false, bool underline = false);
  22. /// 数据收集卡 功能样式设计
  23. /********************************************************
  24. * @function : 获取字符串的画布上的宽度
  25. * @brief : brief
  26. * @input : str: 字符串
  27. * @input : fontSize: 信息区域字体大小
  28. * @input : ttBoxW: 填涂框宽度
  29. * @input : tiSl: 题号和题干的距离
  30. * @input : backPix: 每行的预留空间
  31. * @return :
  32. * @author : qqm 2022/08/31 19:42
  33. *********************************************************/
  34. int getLineStrWidth(string str, int fontSize, int ttBoxW, int tiSl, int backPix);
  35. /********************************************************
  36. * @function : 生成一张数据收集卡
  37. * @brief : brief
  38. * @input : cols: 栏数
  39. * @input : index: 关联ID
  40. * @input : fontSize: 信息区域字体大小
  41. * @input : linGrayPix: 横线的灰度值
  42. * @input : vecLines: 本张数据行
  43. * @input : engShow: 是否显示词性
  44. * @return :
  45. * @author : qqm 2022/08/31 19:42
  46. *********************************************************/
  47. int dataCollectionPaper(int cols, int index, int fontSize, int lineGrayPix, bool engShow, std::vector<tuple<string, string>>& vecLines, CString dir, std::string& strPngPath, std::string tips);
  48. // just for physics
  49. int dataCollectionPaperPhysics(int cols, int index, int fontSize, int lineGrayPix, bool engShow, std::vector<tuple<string, string>>& vecLines, CString dir, std::string& strPngPath, std::string tips);
  50. /********************************************************
  51. * @function : 答题卡切割
  52. * @brief : brief
  53. * @input : pageNum: 页面二进制编码
  54. * @input : strJsonPath: 模板Json路径
  55. * @input : strPaperPath: 答题卡路径
  56. * @input : strSavePath: 存储路径
  57. * @input : vecTranslate: 百度识别后返回的
  58. * @return : > 0 失败
  59. * @author : qqm 2022/08/31 19:42
  60. *********************************************************/
  61. int cutPaper(int pageNum, std::string strJsonPath, std::string strPaperPath, std::string strSavePath, vector<std::tuple<cv::Rect, std::string>>& vecTranslate);
  62. int PareseModeJson(preinfo::templatesInfo& temeplatInfo);
  63. int cutPaper(std::string strImagePath, std::string strCurDir, vector<std::tuple<cv::Rect, std::string>>& vecTranslate);
  64. #endif // PUTTEXT_H_