test.cpp 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. #include "StdAfx.h"
  2. #include "BatchInfo.h"
  3. #include "Log.h"
  4. //#include "qcloud.h"
  5. #include "CrashDumper.h"
  6. CString GetExePath();
  7. CString AnsiToUnicode(const std::string& str);
  8. std::string UnicodeToAnsi(const CString& str);
  9. extern CLog g_log;
  10. string g_region = "ap-shanghai";
  11. string g_bucket_name = "zxhx-1302712961";
  12. int main(int argc, char *argv[])
  13. {
  14. //sqlite3_shutdown();
  15. //if (sqlite3_threadsafe() > 0) {
  16. // int retCode = sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
  17. // if (retCode == SQLITE_OK) {
  18. // int a = 1;
  19. // }
  20. // else {
  21. // int a = 1;
  22. // }
  23. //}
  24. //else {
  25. // int a = 1;
  26. //}
  27. //int a = sqlite3_threadsafe();
  28. CrashDumper dump;
  29. //int a = 1;
  30. //int b = a / (a - 1);
  31. //b++;
  32. g_log.Init("log.txt", LogLvlInfo);
  33. //注释此句
  34. //Qcloud_Init(1302712961, (char*)"AKIDC9pETRbZfWBbmhoglkT4PUJGzRjmj3Ia", (char*)"C6jlX4LKfleGdmfQvGNgj74lESRpBIEJ", (char*)g_region.c_str(), (char*)g_bucket_name.c_str());
  35. if (argc != 2)
  36. {
  37. g_log.PutMsg(LogLvlFailed, "启动参数错误 参数个数=%d", argc);
  38. return 0;
  39. }
  40. CBatch_Server batch_info;
  41. batch_info.m_batch_id = argv[1];
  42. //batch_info.m_hMutexIndex = OpenMutexA(NULL, TRUE, "index_db3");
  43. batch_info.m_hMutexIndex = ::CreateMutex(NULL, TRUE, L"index_db3");
  44. if (batch_info.m_hMutexIndex == NULL)
  45. {
  46. g_log.PutMsg(LogLvlFailed, "index_db3 OpenMutex 失败");
  47. return 0;
  48. }
  49. DWORD dw = WaitForSingleObject(batch_info.m_hMutexIndex, 10000);
  50. if ( WAIT_TIMEOUT==dw)
  51. {
  52. g_log.PutMsg(LogLvlFailed, "访问 index_db3 超时");
  53. return 0;
  54. }
  55. batch_info.m_indexDbPath = "D:/1cutimg/index.db3";
  56. CppSQLite3DB index_db;
  57. try
  58. {
  59. index_db.open(batch_info.m_indexDbPath.c_str());
  60. }
  61. catch (CException* e)
  62. {
  63. g_log.PutMsg(LogLvlFailed, "开启index.db3失败 ");
  64. ReleaseMutex(batch_info.m_hMutexIndex);
  65. return 0;
  66. }
  67. CppSQLite3Query query0;
  68. char sql[256];//upload_type =0 先扫描 后上传 =1 边扫边上传
  69. sprintf_s(sql, "select * from batchs where id=%s", batch_info.m_batch_id.c_str());
  70. query0 = index_db.execQuery(sql);
  71. if (query0.eof())//表示有先扫后传的原图上传
  72. {
  73. index_db.close();
  74. ReleaseMutex(batch_info.m_hMutexIndex);
  75. g_log.PutMsg(LogLvlFailed, "未查到批次=%s", batch_info.m_batch_id.c_str());
  76. return 0;
  77. }
  78. batch_info.m_batchDbPath = query0.getStringField("batchdb_path");
  79. batch_info.m_total_cnt = query0.getIntField("total_cnt");
  80. batch_info.m_work_dir = query0.getStringField("work_dir");
  81. query0.finalize();
  82. index_db.close();
  83. ReleaseMutex(batch_info.m_hMutexIndex);
  84. if (!batch_info.OpenBatchDb())
  85. {
  86. return 0;
  87. }
  88. batch_info.StartScan(1);
  89. }
  90. //void main()
  91. //{
  92. // static int g_count = 0;
  93. // ParseTemplateFromJsonAll("D:\\thirdNanCang\\Win32\\Debug\\1111.zip");
  94. //
  95. //start:
  96. //
  97. // g_count++;
  98. // DWORD t0 = GetTickCount();
  99. // PageIdentify identify;
  100. //
  101. // identify.SetTemplate(m_onlineCardTemplate);
  102. //
  103. // vector<Paper_Page> pages;
  104. // auto act2 = finally([&]
  105. // {
  106. // for (auto& it: pages)
  107. // {
  108. // if (it.result)
  109. // {
  110. // delete it.result;
  111. // it.result = NULL;
  112. // }
  113. // }
  114. // });
  115. // Paper_Page page;
  116. // OMR_RESULT ress;
  117. // OMR_RESULT ress2;
  118. // page.result = new OMR_RESULT;
  119. // page.path = "D:/1测试/1在线南昌全题型/新建文件夹/202112100116_0002.jpg";
  120. // pages.push_back(page);
  121. //
  122. // page.path = "D:/1测试/1在线南昌全题型/新建文件夹/202112100116_0001.jpg";
  123. // page.result = new OMR_RESULT;
  124. // pages.push_back(page);
  125. //
  126. //
  127. // for (int i = 0; i < pages.size();i++ )
  128. // {
  129. //
  130. // OMR_RESULT *result_buffer = pages[i].result;
  131. // IplImage *src = cvLoadImage(pages[i].path.c_str());
  132. // if (src==NULL)
  133. // {
  134. //
  135. // }
  136. // IplImage * dst = NULL;
  137. // SchemaPage* pschemaPage1 = NULL;
  138. // CvMemStorage* storage = cvCreateMemStorage(0);
  139. //
  140. //
  141. // auto act1 = finally([&]
  142. // {
  143. // if (src != NULL)cvReleaseImage(&src);
  144. // src = NULL;
  145. // if (dst != NULL)cvReleaseImage(&dst);
  146. // dst = NULL;
  147. // if (pschemaPage1 != NULL)delete pschemaPage1;
  148. // pschemaPage1 = NULL;
  149. // cvReleaseMemStorage(&storage);
  150. // storage = NULL;
  151. // });
  152. //
  153. //
  154. // auto actstorage = finally([&]
  155. // {
  156. //
  157. // });
  158. //
  159. //
  160. //
  161. // bool ret = identify.createSchema(src, &dst, &pschemaPage1, "", true, "m_strQrClass", 0);
  162. //
  163. //
  164. // identify.out_result = result_buffer;
  165. // identify.omr_result = (identify::result::OMR_RESULT*)identify.out_result;
  166. //
  167. //
  168. // SchemaPage& schemaPage = *pschemaPage1;
  169. // identify.omr_result->card_qrFlag = schemaPage.qrFlag;
  170. // identify.omr_result->is_same_exam_id = schemaPage.is_same_exam_id;
  171. // identify.omr_result->is_front_page = schemaPage.is_front_page;
  172. // identify.omr_result->is_use_qr_code = schemaPage.is_use_qr_code;
  173. // identify.omr_result->examid_by_qr_code = schemaPage.examid_by_qr_code;
  174. // identify.omr_result->online_card_paperid = schemaPage.paper_id;
  175. // identify.omr_result->strMagicStudentId = schemaPage.student_code;
  176. // /************************读取学生学号*********************************************/
  177. //
  178. // if (schemaPage.is_front_page)
  179. // {
  180. // ret = identify.ReadStudentID(schemaPage, dst);
  181. // if (ret != identify::result::IDF_SUCCESS) {
  182. // if (dst != NULL)cvReleaseImage(&dst);
  183. //
  184. // if (pschemaPage1 != NULL)delete pschemaPage1;
  185. // return;
  186. // }
  187. // /************************读取缺考标记*********************************************/
  188. // identify.omr_result->quekaoFlag = identify.ReadQuekaoFlag(schemaPage, dst);
  189. // /************************客观题()*********************************************/
  190. // ret = identify.ReadKeGuanTi(schemaPage, dst);
  191. // if (ret != identify::result::IDF_SUCCESS) {
  192. //
  193. // return;
  194. // }
  195. // }
  196. //
  197. // //LOGI("Identify_impl 3");
  198. // /************************查找题目定位点,准备定位数据*********************************************/
  199. // //ret = identify.FindQuestionLocatePoints(schemaPage, dst);
  200. // //if (ret != identify::result::IDF_SUCCESS) {
  201. //
  202. // // return;
  203. // //}
  204. //
  205. // //LOGI("Identify_impl 4");
  206. // /************************阅卷读取*************************************************/
  207. // ret = identify.ReadQuestionScore(schemaPage, dst, storage);
  208. // if (ret != identify::result::IDF_SUCCESS) {
  209. // return;
  210. // }
  211. // //LOGI("Identify_impl 6");
  212. // /************************根据给定区域切割图片*********************************************/
  213. // ret = identify.ClipImg(schemaPage, dst);
  214. // if (ret != identify::result::IDF_SUCCESS) {
  215. // return;
  216. // }
  217. //
  218. //
  219. //
  220. // identify.omr_result->card_index = schemaPage.index;
  221. // /*
  222. // if (1){
  223. // DrawSchema(dst, pschemaPage);
  224. // cvSaveImage(path.c_str(), dst);
  225. // }
  226. // */
  227. // }
  228. // vector<saveImgesPara*> vct_saveImges;
  229. // map<string, int> cut_area_map;
  230. // if (pages[0].result->is_front_page==false)
  231. // {
  232. // pages.push_back(pages[0]);
  233. // pages.erase(pages.begin());
  234. // }
  235. // for (int i = 0; i < pages.size(); i++)
  236. // {
  237. // OMR_RESULT *m_result_buffer = pages[i].result;
  238. // for (int j = 0; j < m_result_buffer->cut_area_result.size(); j++)
  239. // {
  240. // if (cut_area_map.find(m_result_buffer->cut_area_result[j].area_name)!=cut_area_map.end())//已经生成过了
  241. // {
  242. // continue;
  243. // }
  244. //
  245. //
  246. // string cut_name = m_result_buffer->cut_area_result[j].area_name;
  247. // vector<CUT_AREA_RESULT*>* area_rst=new vector<CUT_AREA_RESULT*>;
  248. // if (cut_name=="37")
  249. // {
  250. // int a = 1;
  251. // a++;
  252. // }
  253. // for (int i2 = 0; i2 < pages.size(); i2++)
  254. // {
  255. // OMR_RESULT *m_result_buffer2 = pages[i2].result;
  256. // for (int j2 = 0; j2 < m_result_buffer2->cut_area_result.size(); j2++)
  257. // {
  258. // if (m_result_buffer2->cut_area_result[j2].area_name == cut_name)//
  259. // {
  260. // area_rst->push_back(&m_result_buffer2->cut_area_result[j2]);
  261. // }
  262. // }
  263. // }
  264. // cut_area_map[cut_name] = 0;
  265. //
  266. // bool flag = false;
  267. // if (area_rst->size() > 1)
  268. // {
  269. // flag = true;
  270. // }
  271. //
  272. // saveImgesPara *para = new saveImgesPara(area_rst, CString("D:/1cutimg"), 0, flag);
  273. // vct_saveImges.push_back(para);
  274. // QueueUserWorkItem(SaveCutImageThread, para, WT_EXECUTELONGFUNCTION);
  275. //
  276. // }
  277. // }
  278. // int a = 0;
  279. // a++;
  280. // while (true)
  281. // {
  282. // if (vct_saveImges.size()==0)
  283. // {
  284. // break;
  285. // }
  286. // if (vct_saveImges[0]->bSaved)
  287. // {
  288. // delete vct_saveImges[0]->area_rst;
  289. // vct_saveImges.erase(vct_saveImges.begin());
  290. // continue;
  291. // }
  292. // else
  293. // {
  294. // Sleep(10);
  295. // }
  296. // }
  297. // DWORD t1 = GetTickCount() - t0;
  298. // printf("t1=%d \r\n",t1);
  299. // goto start;
  300. // return ;
  301. //}