#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 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 vct_saveImges; // map 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* area_rst=new vector; // 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 ; //}