123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- #include "StdAfx.h"
- #include "BatchInfo.h"
- #include "Log.h"
- //#include "qcloud.h"
- #include "CrashDumper.h"
- CString GetExePath();
- CString AnsiToUnicode(const std::string& str);
- std::string UnicodeToAnsi(const CString& str);
- extern CLog g_log;
- string g_region = "ap-shanghai";
- string g_bucket_name = "zxhx-1302712961";
- int main(int argc, char *argv[])
- {
- //sqlite3_shutdown();
- //if (sqlite3_threadsafe() > 0) {
- // int retCode = sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
- // if (retCode == SQLITE_OK) {
- // int a = 1;
- // }
- // else {
- // int a = 1;
- // }
- //}
- //else {
- // int a = 1;
- //}
- //int a = sqlite3_threadsafe();
- CrashDumper dump;
- //int a = 1;
- //int b = a / (a - 1);
- //b++;
- g_log.Init("log.txt", LogLvlInfo);
- //注释此句
- //Qcloud_Init(1302712961, (char*)"AKIDC9pETRbZfWBbmhoglkT4PUJGzRjmj3Ia", (char*)"C6jlX4LKfleGdmfQvGNgj74lESRpBIEJ", (char*)g_region.c_str(), (char*)g_bucket_name.c_str());
- if (argc != 2)
- {
- g_log.PutMsg(LogLvlFailed, "启动参数错误 参数个数=%d", argc);
- return 0;
- }
- CBatch_Server batch_info;
- batch_info.m_batch_id = argv[1];
- //batch_info.m_hMutexIndex = OpenMutexA(NULL, TRUE, "index_db3");
- batch_info.m_hMutexIndex = ::CreateMutex(NULL, TRUE, L"index_db3");
- if (batch_info.m_hMutexIndex == NULL)
- {
- g_log.PutMsg(LogLvlFailed, "index_db3 OpenMutex 失败");
- return 0;
- }
- DWORD dw = WaitForSingleObject(batch_info.m_hMutexIndex, 10000);
- if ( WAIT_TIMEOUT==dw)
- {
- g_log.PutMsg(LogLvlFailed, "访问 index_db3 超时");
- return 0;
- }
- batch_info.m_indexDbPath = "D:/1cutimg/index.db3";
- CppSQLite3DB index_db;
- try
- {
- index_db.open(batch_info.m_indexDbPath.c_str());
- }
- catch (CException* e)
- {
- g_log.PutMsg(LogLvlFailed, "开启index.db3失败 ");
- ReleaseMutex(batch_info.m_hMutexIndex);
- return 0;
- }
- CppSQLite3Query query0;
- char sql[256];//upload_type =0 先扫描 后上传 =1 边扫边上传
- sprintf_s(sql, "select * from batchs where id=%s", batch_info.m_batch_id.c_str());
- query0 = index_db.execQuery(sql);
- if (query0.eof())//表示有先扫后传的原图上传
- {
- index_db.close();
- ReleaseMutex(batch_info.m_hMutexIndex);
- g_log.PutMsg(LogLvlFailed, "未查到批次=%s", batch_info.m_batch_id.c_str());
- return 0;
- }
- batch_info.m_batchDbPath = query0.getStringField("batchdb_path");
- batch_info.m_total_cnt = query0.getIntField("total_cnt");
- batch_info.m_work_dir = query0.getStringField("work_dir");
- query0.finalize();
- index_db.close();
- ReleaseMutex(batch_info.m_hMutexIndex);
- if (!batch_info.OpenBatchDb())
- {
- return 0;
- }
-
- batch_info.StartScan(1);
- }
- //void main()
- //{
- // static int g_count = 0;
- // ParseTemplateFromJsonAll("D:\\thirdNanCang\\Win32\\Debug\\1111.zip");
- //
- //start:
- //
- // g_count++;
- // DWORD t0 = GetTickCount();
- // PageIdentify identify;
- //
- // identify.SetTemplate(m_onlineCardTemplate);
- //
- // vector<Paper_Page> pages;
- // auto act2 = finally([&]
- // {
- // for (auto& it: pages)
- // {
- // if (it.result)
- // {
- // delete it.result;
- // it.result = NULL;
- // }
- // }
- // });
- // Paper_Page page;
- // OMR_RESULT ress;
- // OMR_RESULT ress2;
- // page.result = new OMR_RESULT;
- // page.path = "D:/1测试/1在线南昌全题型/新建文件夹/202112100116_0002.jpg";
- // pages.push_back(page);
- //
- // page.path = "D:/1测试/1在线南昌全题型/新建文件夹/202112100116_0001.jpg";
- // page.result = new OMR_RESULT;
- // pages.push_back(page);
- //
- //
- // for (int i = 0; i < pages.size();i++ )
- // {
- //
- // OMR_RESULT *result_buffer = pages[i].result;
- // IplImage *src = cvLoadImage(pages[i].path.c_str());
- // if (src==NULL)
- // {
- //
- // }
- // IplImage * dst = NULL;
- // SchemaPage* pschemaPage1 = NULL;
- // CvMemStorage* storage = cvCreateMemStorage(0);
- //
- //
- // auto act1 = finally([&]
- // {
- // if (src != NULL)cvReleaseImage(&src);
- // src = NULL;
- // if (dst != NULL)cvReleaseImage(&dst);
- // dst = NULL;
- // if (pschemaPage1 != NULL)delete pschemaPage1;
- // pschemaPage1 = NULL;
- // cvReleaseMemStorage(&storage);
- // storage = NULL;
- // });
- //
- //
- // auto actstorage = finally([&]
- // {
- //
- // });
- //
- //
- //
- // bool ret = identify.createSchema(src, &dst, &pschemaPage1, "", true, "m_strQrClass", 0);
- //
- //
- // identify.out_result = result_buffer;
- // identify.omr_result = (identify::result::OMR_RESULT*)identify.out_result;
- //
- //
- // SchemaPage& schemaPage = *pschemaPage1;
- // identify.omr_result->card_qrFlag = schemaPage.qrFlag;
- // identify.omr_result->is_same_exam_id = schemaPage.is_same_exam_id;
- // identify.omr_result->is_front_page = schemaPage.is_front_page;
- // identify.omr_result->is_use_qr_code = schemaPage.is_use_qr_code;
- // identify.omr_result->examid_by_qr_code = schemaPage.examid_by_qr_code;
- // identify.omr_result->online_card_paperid = schemaPage.paper_id;
- // identify.omr_result->strMagicStudentId = schemaPage.student_code;
- // /************************读取学生学号*********************************************/
- //
- // if (schemaPage.is_front_page)
- // {
- // ret = identify.ReadStudentID(schemaPage, dst);
- // if (ret != identify::result::IDF_SUCCESS) {
- // if (dst != NULL)cvReleaseImage(&dst);
- //
- // if (pschemaPage1 != NULL)delete pschemaPage1;
- // return;
- // }
- // /************************读取缺考标记*********************************************/
- // identify.omr_result->quekaoFlag = identify.ReadQuekaoFlag(schemaPage, dst);
- // /************************客观题()*********************************************/
- // ret = identify.ReadKeGuanTi(schemaPage, dst);
- // if (ret != identify::result::IDF_SUCCESS) {
- //
- // return;
- // }
- // }
- //
- // //LOGI("Identify_impl 3");
- // /************************查找题目定位点,准备定位数据*********************************************/
- // //ret = identify.FindQuestionLocatePoints(schemaPage, dst);
- // //if (ret != identify::result::IDF_SUCCESS) {
- //
- // // return;
- // //}
- //
- // //LOGI("Identify_impl 4");
- // /************************阅卷读取*************************************************/
- // ret = identify.ReadQuestionScore(schemaPage, dst, storage);
- // if (ret != identify::result::IDF_SUCCESS) {
- // return;
- // }
- // //LOGI("Identify_impl 6");
- // /************************根据给定区域切割图片*********************************************/
- // ret = identify.ClipImg(schemaPage, dst);
- // if (ret != identify::result::IDF_SUCCESS) {
- // return;
- // }
- //
- //
- //
- // identify.omr_result->card_index = schemaPage.index;
- // /*
- // if (1){
- // DrawSchema(dst, pschemaPage);
- // cvSaveImage(path.c_str(), dst);
- // }
- // */
- // }
- // vector<saveImgesPara*> vct_saveImges;
- // map<string, int> cut_area_map;
- // if (pages[0].result->is_front_page==false)
- // {
- // pages.push_back(pages[0]);
- // pages.erase(pages.begin());
- // }
- // for (int i = 0; i < pages.size(); i++)
- // {
- // OMR_RESULT *m_result_buffer = pages[i].result;
- // for (int j = 0; j < m_result_buffer->cut_area_result.size(); j++)
- // {
- // if (cut_area_map.find(m_result_buffer->cut_area_result[j].area_name)!=cut_area_map.end())//已经生成过了
- // {
- // continue;
- // }
- //
- //
- // string cut_name = m_result_buffer->cut_area_result[j].area_name;
- // vector<CUT_AREA_RESULT*>* area_rst=new vector<CUT_AREA_RESULT*>;
- // if (cut_name=="37")
- // {
- // int a = 1;
- // a++;
- // }
- // for (int i2 = 0; i2 < pages.size(); i2++)
- // {
- // OMR_RESULT *m_result_buffer2 = pages[i2].result;
- // for (int j2 = 0; j2 < m_result_buffer2->cut_area_result.size(); j2++)
- // {
- // if (m_result_buffer2->cut_area_result[j2].area_name == cut_name)//
- // {
- // area_rst->push_back(&m_result_buffer2->cut_area_result[j2]);
- // }
- // }
- // }
- // cut_area_map[cut_name] = 0;
- //
- // bool flag = false;
- // if (area_rst->size() > 1)
- // {
- // flag = true;
- // }
- //
- // saveImgesPara *para = new saveImgesPara(area_rst, CString("D:/1cutimg"), 0, flag);
- // vct_saveImges.push_back(para);
- // QueueUserWorkItem(SaveCutImageThread, para, WT_EXECUTELONGFUNCTION);
- //
- // }
- // }
- // int a = 0;
- // a++;
- // while (true)
- // {
- // if (vct_saveImges.size()==0)
- // {
- // break;
- // }
- // if (vct_saveImges[0]->bSaved)
- // {
- // delete vct_saveImges[0]->area_rst;
- // vct_saveImges.erase(vct_saveImges.begin());
- // continue;
- // }
- // else
- // {
- // Sleep(10);
- // }
- // }
- // DWORD t1 = GetTickCount() - t0;
- // printf("t1=%d \r\n",t1);
- // goto start;
- // return ;
- //}
|