/* 主函数文件:segmentation.cpp 主函数的实现文件 */ #include "segmentation.h" #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )//无界面运行 /*主函数*/ int main(int argc,char* argv[]) { if(argc<2) return -1; //for(int iii=0;iii suspict; //记录嫌疑图片地址 vector suspict_wcd; //嫌疑图片的wcd值 vector files; //存储该生所有考试文件路径 vector dateVec, subjectVec, stuNum2; vector flagVec;//记录查到的学生的所有考试信息 /*读取配置文件,并配置各项参数*/ if (!ReadConfig("D:/HWCV/config/configure.cfg")) { SaveLog("\t配置文件读取失败\n", g_log_adr, "a"); return 0; } // cout<<"ReadConfig success"< output_bzc; if (!ReadScanf("D:\\HWCV\\config\\stdfile.db", bzccolumns, output_bzc)) { memset(g_log_rec, 0, sizeof(g_log_rec)); SaveLog("\n读取路径:D:\\HWCV\\config\\stdfile.db 的标准差文件失败!\n", g_log_adr, "a"); return 0; } for (ii = 0; ii < 48; ii++)//output_vector可视为二维数组;输出数组元素: for (jj = ii + 1; jj < 47; jj++) bzckesa[ii][jj] = output_bzc[ii][jj]; /*求相似性,即带权卡方wcd*/ for (i = 0; i < realSize; i++) for (ii = 0; ii < 48; ii++) for (jj = ii + 1; jj < 47; jj++) if (featurep[ii][jj][i] * featurep[ii][jj][g_conti] != 0 && bzckesa[ii][jj] != -1) wcd[i] += pow((featurep[ii][jj][i] - featurep[ii][jj][g_conti]), 2) / ((featurep[ii][jj][i] + featurep[ii][jj][g_conti])*bzckesa[ii][jj]); //标出所有有嫌疑的图像1,无嫌疑的图像0 for (i = 0; i < dateVec.size(); i++) { if (wcd[i] > 0.12) { xyimgnum++; suspict.push_back(files[i].c_str()); suspict_wcd.push_back(wcd[i]); flagVec.push_back("1");//嫌疑标记1 } else { flagVec.push_back("0"); } } //结果更新数据库 DbUpdate(stuNum, dateVec, subjectVec, stuNum2, flagVec); // cout << "数据库更新完毕" << endl; /*将结果存入log文件*/ strcat(g_log_rec, "\n"); memset(g_log_rec, 0, sizeof(g_log_rec)); strcat(g_log_rec, GetTime()); strcat(g_log_rec, "\t考生考号:"); strcat(g_log_rec, fpname1); strcat(g_log_rec, " 图片总数为:"); char pic_num[20]; _itoa(realSize, pic_num, 10); strcat(g_log_rec, pic_num); if (xyimgnum > 0) { /* strcat(g_log_rec, "\t"); strcat(g_log_rec, suspict[0].c_str()); strcat(g_log_rec, "\t"); char a[20]; sprintf(a, "%g", suspict_wcd[0]); strcat(g_log_rec, a); */ strcat(g_log_rec, "\n"); for (i = 0; i < xyimgnum; i++) { strcat(g_log_rec, "\t\t\t\t嫌疑图像:"); strcat(g_log_rec, suspict[i].c_str()); strcat(g_log_rec, "\t相似度:"); float sim=(1.0-suspict_wcd[i])*100; char a[20]; sprintf(a, "%g", sim); strcat(g_log_rec, a); strcat(g_log_rec, "%%\n"); } } else strcat(g_log_rec, "\t该考生没有嫌疑图像!\n"); SaveLog(g_log_rec, g_log_adr, "a"); /*善后*/ suspict.clear(); suspict_wcd.clear(); output_bzc.clear(); memset(g_log_rec, 0, sizeof(g_log_rec)); memset(feature, 0, sizeof(feature)); memset(featurep, 0, sizeof(featurep)); memset(bzckesa, 0, sizeof(bzckesa)); memset(wcd, 0, sizeof(wcd)); memset(featdif, 0, sizeof(featdif)); files.clear(); dateVec.clear(); subjectVec.clear(); stuNum2.clear(); flagVec.clear(); /*返回值*/ return 0; }