diff --git a/Cigarette/Cigarette.vcxproj b/Cigarette/Cigarette.vcxproj index 18e7c3b..5d0c458 100644 --- a/Cigarette/Cigarette.vcxproj +++ b/Cigarette/Cigarette.vcxproj @@ -151,7 +151,6 @@ - @@ -394,7 +393,6 @@ - $(QTDIR)\bin\moc.exe;%(FullPath) diff --git a/Cigarette/Cigarette.vcxproj.filters b/Cigarette/Cigarette.vcxproj.filters index 385d71e..3cc8ba2 100644 --- a/Cigarette/Cigarette.vcxproj.filters +++ b/Cigarette/Cigarette.vcxproj.filters @@ -257,9 +257,6 @@ Source Files - - Source Files - @@ -420,8 +417,5 @@ Header Files - - Header Files - \ No newline at end of file diff --git a/Cigarette/alg_jd.cpp b/Cigarette/alg_jd.cpp index a6faae7..20a23c2 100644 --- a/Cigarette/alg_jd.cpp +++ b/Cigarette/alg_jd.cpp @@ -152,6 +152,7 @@ void AlgJd::analyse(cv::Mat vec_in, std::vector >& vec_ cv::imshow("analyse", topography); cv::waitKey(1); } + } // Get the names of the output layers diff --git a/Cigarette/alg_jd.h b/Cigarette/alg_jd.h index aa66cc8..36e4259 100644 --- a/Cigarette/alg_jd.h +++ b/Cigarette/alg_jd.h @@ -15,7 +15,6 @@ class AlgJd bool init(QString model_path, QString model_name); bool test_detect(); bool test_detect_batcht(int shoot); - int detect(cv::Mat& in, cv::Mat &draw_frame, cv::Mat& out, std::vector >& results); int detect(cv::Mat& in, cv::Mat &out, std::vector > &results); // Remove the bounding boxes with low confidence using non-maxima suppression void post_process(cv::Mat& frame, std::vector& outs, std::vector > &results); @@ -32,10 +31,5 @@ class AlgJd cv::dnn::Net net; std::vector classes; }; -//jinhuan+ -bool sort_rect_by_x_center(cv::Rect r1, cv::Rect r2); -bool sort_rect_by_y_center(cv::Rect r1, cv::Rect r2); -bool sort_rect_by_height(cv::Rect r1, cv::Rect r2); -bool sort_rect_by_width(cv::Rect r1, cv::Rect r2); -//jinhuan- + #endif //end of _CIGARETTE_JD diff --git a/Cigarette/cigarette.cpp b/Cigarette/cigarette.cpp index 959c2c1..d295934 100644 --- a/Cigarette/cigarette.cpp +++ b/Cigarette/cigarette.cpp @@ -28,10 +28,8 @@ QDateTime g_ts_start; extern SingleCamInfoStruct SingleCamInfo[NumberOfSupportedCameras]; AlgJd alg_jd[NumberOfSupportedCameras]; //检测胶点的AI算法 -AlgJd_ng alg_jd_ng[NumberOfSupportedCameras]; // 检测卡纸、薄膜褶皱 #ifdef __DEBUG AlgJd alg_test;//test AI算法 -AlgKz alg_kz_test; #endif QThread* pThread[NumberOfSupportedCameras]; @@ -48,7 +46,7 @@ Pylon::CBaslerUniversalInstantCamera* BaslerCamHandle[NumberOfSupportedCameras]; void *HIKCamHandle[NumberOfSupportedCameras]; CaptureThreadHIK* pHIKCaptureThread[NumberOfSupportedCameras]; -SyncQueue > *g_save_queue; //图片保存队列 +SyncQueue> *g_save_queue; //图片保存队列 SyncQueue > *g_image_queue[NumberOfSupportedCameras]; //int表示一个目标拍了几张 ASyncQueue *g_shooted_queue[NumberOfSupportedCameras]; // ASyncQueue *g_result_wait_queue[NumberOfSupportedCameras]; // @@ -92,7 +90,6 @@ VOID BeforeWork(int shoot[]) { if (SingleCamInfo[i].Detect && SingleCamInfo[i].IsOpen) { alg_jd[i].test_detect_batcht(shoot[i]); - alg_jd_ng[i].test_detect_batcht_ng(shoot[i]); } } } @@ -105,6 +102,7 @@ Cigarette::Cigarette(QWidget *parent) ui.setupUi(this); InitPtrMat(); read_conf(g_conf_path); + if (!g_conf_path.config_path.isEmpty()) { // 如果非空 QDir* dirinfo = new QDir(g_conf_path.config_path); @@ -276,7 +274,6 @@ Cigarette::Cigarette(QWidget *parent) m_PLCDevice = new PLCDevice; PLCDevice::init_plc(m_PLCDevice); - if(m_PLCDevice->g_plc_ok) { printf("Connected to dev!\n"); @@ -314,36 +311,26 @@ Cigarette::Cigarette(QWidget *parent) { if(SingleCamInfo[i].Detect){ cam_status_mat[i]->setStyleSheet(tr("background-color: rgb(0, 170, 0);")); - - QString model_path, model1_name, model2_name; + QString model_path, model_name; if (g_sys_conf.model_path.isEmpty()) { model_path = "D:/model"; - //g_sys_conf.model_path = model_path; + g_sys_conf.model_path = "D:/model"; } else model_path = g_sys_conf.model_path; - if (g_sys_conf.model1_name.isEmpty()) { - model1_name = "jd.weights"; - g_sys_conf.model1_name = model1_name; - model2_name = "jd_ng.weights"; - g_sys_conf.model2_name = model2_name; - } - else { - model1_name = g_sys_conf.model1_name; - model2_name = g_sys_conf.model2_name; + if (g_sys_conf.model_name.isEmpty()) { + model_name = "jd.weights"; + g_sys_conf.model_name = "jd.weights"; } - - if (!alg_jd[i].init(model_path, model1_name)) + else + model_name = g_sys_conf.model_name; + + if (!alg_jd[i].init(model_path, model_name)) { QMessageBox::information(NULL, QStringLiteral("系统自检失败"), QStringLiteral("AI模型1初始化失败,请检查程序完整性"), QMessageBox::Ok); exit(-1); } - else if (!alg_jd_ng[i].init_ng(model_path, model2_name)) - { - QMessageBox::information(NULL, QStringLiteral("系统自检失败"), QStringLiteral("AI模型2初始化失败,请检查程序完整性"), QMessageBox::Ok); - exit(-1); - } CreatWorkThread(SingleCamInfo[i].CamClass, i, this); } else { @@ -390,8 +377,7 @@ Cigarette::Cigarette(QWidget *parent) } #ifdef __DEBUG - alg_test.init(g_sys_conf.model_path, g_sys_conf.model1_name);//test AI算法 - alg_kz_test.init(g_sys_conf.model_path, g_sys_conf.model2_name); + alg_test.init(g_sys_conf.model_path, g_sys_conf.model_name);//test AI算法 #endif //自动打开所有相机 @@ -792,14 +778,7 @@ void Cigarette::TestImg() } std::vector > results; cv::Mat output; - // alg_test.detect(imagein, output, results); - //alg_kz_test.detect(imagein, output, results); - - cv::Mat transit = imagein.clone(); - //std::vector > results; - alg_test.detect(imagein, transit, output, results); - alg_kz_test.detect(imagein, transit, output, results); - + alg_test.detect(imagein, output,results); std::string WindowName = "TestImg"; cv::namedWindow(WindowName, cv::WINDOW_NORMAL); cv::imshow(WindowName, output); @@ -835,17 +814,12 @@ void Cigarette::TestImgs() } cv::Mat output; - cv::Mat transit = imagein.clone(); std::vector > results; - std::vector vec_jd_results; - std::vector vec_bm_results; - alg_test.detect(imagein, transit, output, results); - alg_kz_test.detect(imagein, transit, output, results); - - std::string WindowName = "TestImgs"; + alg_test.detect(imagein, output,results); + std::string WindowName = "TestImg"; cv::namedWindow(WindowName, cv::WINDOW_NORMAL); - cv::imshow(WindowName, transit); - int k = cv::waitKeyEx(100); + cv::imshow(WindowName, output); + int k = cv::waitKeyEx(1); if (k == 27)break;//ESC键 #ifdef __ExportData alg_test.analyse(imagein, results); @@ -2410,26 +2384,6 @@ bool Cigarette::read_sys_config(SysConf &conf, QString conf_path) { ///相似度 conf.ConfThreshold = atoi(line.substr(pos + 1).c_str()); } - else if (tmp_key == "CONFTHRESHOLDS") - { ///相似度 - std::vector vec_info; - string_split(line.substr(pos + 1), "|",vec_info); - if (vec_info.size() == 4) - { - conf.ConfThresholds[0]=atoi(vec_info[0].c_str());// 0 胶点 - conf.ConfThresholds[1]=atoi(vec_info[1].c_str());// 1 卡纸 - conf.ConfThresholds[2]=atoi(vec_info[2].c_str());// 2 薄膜 - conf.ConfThresholds[3]=atoi(vec_info[3].c_str());// 3 卡纸下 - } - } - else if (tmp_key == "UP_JD_SPACE") - { /// 是否自动打开相机:0否;1是 - conf.Up_jd_Space= atoi(line.substr(pos + 1).c_str()); - } - else if (tmp_key == "DOWN_JD_SPACE") - { /// 是否自动打开相机:0否;1是 - conf.Down_jd_Space = atoi(line.substr(pos + 1).c_str()); - } else if (tmp_key == "AUTO_OPEN") { /// 是否自动打开相机:0否;1是 conf.auto_open = atoi(line.substr(pos + 1).c_str()); @@ -2483,11 +2437,7 @@ bool Cigarette::read_sys_config(SysConf &conf, QString conf_path) } else if (tmp_key == "MODELNAME") { - conf.model1_name = line.substr(pos + 1).c_str(); - } - else if (tmp_key == "KZMODELNAME") - { - conf.model2_name = line.substr(pos + 1).c_str(); + conf.model_name = line.substr(pos + 1).c_str(); } else if (tmp_key == "JPGPATH") { @@ -3006,11 +2956,13 @@ void Cigarette::read_plc_items() std::fstream cfg_file; QString plc_file = g_conf_path.config_path + "/" + PLC_CONFIG_FILE; cfg_file.open(plc_file.toLocal8Bit().constData()); + if (!cfg_file.is_open()) { std::cout << "Error: Open production file " << PLC_CONFIG_FILE << std::endl; return; } + while (!cfg_file.eof()) { char tmp[1024] = ""; @@ -3844,18 +3796,25 @@ void Cigarette::CleanThreadStartAuto() void Cigarette::record_output_statistic(qint64 quantity, int Kick[NumberOfSupportedCameras], int shift) { + QString file_name, file_path; for (int i = 0; i < NumberOfSupportedCameras; i++) { if (SingleCamInfo[i].IsOpen && quantity > 0) { std::fstream cfg_file; - char str[256]; - memset(str, 0, 256); - sprintf(str, STATISTIC_FILE, i); + //char str[256]; + //memset(str, 0, 256); + //sprintf(str, STATISTIC_FILE, i); + //char buf[256]; + //memset(buf, 0, 256); + //sprintf(buf, "%s/%s", g_conf_path.config_path.toLocal8Bit().constData(), str); + file_name = QString(STATISTIC_FILE).arg(i); + file_path = g_conf_path.config_path + "/" + file_name; + char buf[256]; memset(buf, 0, 256); - sprintf(buf, "%s/%s", g_conf_path.config_path.toLocal8Bit().constData(), str); - + sprintf(buf, "%s", file_path.toLocal8Bit().constData()); //std::cout<<"===buf>"<clear(); ui.comboBox_model_path->addItems(fileList); - if (!g_sys_conf.model1_name.isEmpty()) { + if (!g_sys_conf.model_name.isEmpty()) { // 濡傛灉鏇鹃夋嫨杩囨ā鍨嬶紝鍒欏湪comboBox鏄剧ず閫夋嫨妯″瀷鐨勬枃浠跺悕 - ui.comboBox_model_path->setCurrentText(g_sys_conf.model1_name); + ui.comboBox_model_path->setCurrentText(g_sys_conf.model_name); } delete dirinfo, dirinfo = nullptr; } else { // 濡傛灉鏈浘閫夋嫨杩囨ā鍨嬫枃浠跺す - if (!g_sys_conf.model1_name.isEmpty()) { + if (!g_sys_conf.model_name.isEmpty()) { // 濡傛灉鏇剧粡閫夋嫨杩囨ā鍨嬫枃浠 - ui.comboBox_model_path->addItem(g_sys_conf.model1_name); + ui.comboBox_model_path->addItem(g_sys_conf.model_name); } } // 鏇存崲妯″瀷浜嬩欢 @@ -114,9 +114,8 @@ DialogSetup::DialogSetup(QWidget * parent) : QDialog(parent) { dirinfo->mkdir(g_conf_path.save_pics_path); } - ui.comboBox_save_pics_path->clear(); + //ui.comboBox_save_pics_path->clear(); ui.comboBox_save_pics_path->addItem(g_conf_path.save_pics_path); - delete dirinfo, dirinfo = nullptr; } else { @@ -124,7 +123,7 @@ DialogSetup::DialogSetup(QWidget * parent) : QDialog(parent) { QDir *dirinfo = new QDir(dirPath); if (!dirinfo->exists()) delete dirinfo, dirinfo = nullptr; - ui.comboBox_save_pics_path->clear(); + //ui.comboBox_save_pics_path->clear(); ui.comboBox_save_pics_path->setCurrentText(dirPath); g_conf_path.save_pics_path = dirPath; } @@ -175,7 +174,7 @@ void DialogSetup::onComboBoxSelect(int index) { // 鑾峰彇comboBox褰撳墠鍐呭 QString ct = ui.comboBox_model_path->currentText(); // 淇濆瓨鍒伴厤缃枃浠朵腑 - g_sys_conf.model1_name = ct; + g_sys_conf.model_name = ct; } void DialogSetup::on_toolButton_keyboard_released() @@ -392,7 +391,7 @@ void DialogSetup::on_toolButton_choose_model_path_released() { QString dirName = QFileDialog::getExistingDirectory(this, QStringLiteral("璇烽夋嫨妯″瀷鎵鍦ㄦ枃浠跺す"), "./"); //std::cout << "dirName is " << dirName.toStdString().c_str() << std::endl; //std::cout << "g_sys_conf.dir_path is " << g_sys_conf.dir_path.toStdString().c_str() << std::endl; - //std::cout << "g_sys_conf.model1_name is " << g_sys_conf.model1_name.toStdString().c_str() << std::endl; + //std::cout << "g_sys_conf.model_name is " << g_sys_conf.model_name.toStdString().c_str() << std::endl; if (dirName.isEmpty()) { if (g_sys_conf.model_path.isEmpty()) @@ -402,7 +401,7 @@ void DialogSetup::on_toolButton_choose_model_path_released() { ui.comboBox_model_path->addItem(dirName); g_sys_conf.model_path = dirName; - g_sys_conf.model1_name = "jd.weights"; + g_sys_conf.model_name = "jd.weights"; } QDir* dirinfo = new QDir(dirName); if (!dirinfo->exists()) @@ -411,7 +410,7 @@ void DialogSetup::on_toolButton_choose_model_path_released() { QStringList fileList = dirinfo->entryList(QDir::Files); if (fileList.count() == 0) { g_sys_conf.model_path = "D:/model"; - g_sys_conf.model1_name = "jd.weights"; + g_sys_conf.model_name = "jd.weights"; } else g_sys_conf.model_path = dirName; @@ -421,7 +420,7 @@ void DialogSetup::on_toolButton_choose_model_path_released() { ui.comboBox_model_path->clear(); ui.comboBox_model_path->addItems(fileList); - //g_sys_conf.model1_name = ui.comboBox_model_path->currentText(); + //g_sys_conf.model_name = ui.comboBox_model_path->currentText(); connect(ui.comboBox_model_path, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxSelect(int))); delete dirinfo, dirinfo = nullptr; @@ -436,7 +435,7 @@ void DialogSetup::on_toolButton_choose_save_pics_path_released() { dirName = "D:/image"; else dirName = g_conf_path.save_pics_path; - ui.comboBox_save_pics_path->addItem(dirName); + //ui.comboBox_save_pics_path->addItem(dirName); //return; } @@ -444,14 +443,17 @@ void DialogSetup::on_toolButton_choose_save_pics_path_released() { if (!dirinfo->exists()) delete dirinfo, dirinfo = nullptr; - ui.comboBox_save_pics_path->clear(); - ui.comboBox_save_pics_path->addItem(dirName); - //g_conf_path.save_pics_path = dirName; + QFileInfo fileInfo(dirName); + if (fileInfo.isDir() && ui.comboBox_save_pics_path->findText(fileInfo.absoluteFilePath())) { + ui.comboBox_save_pics_path->addItem(fileInfo.absoluteFilePath()); + ui.comboBox_save_pics_path->setCurrentText(fileInfo.absoluteFilePath()); + } - connect(ui.comboBox_save_pics_path, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxPicsPathSelect(int))); + g_conf_path.save_pics_path = dirName; - delete dirinfo, dirinfo = nullptr; + connect(ui.comboBox_save_pics_path, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxPicsPathSelect(int))); write_conf_path(); + delete dirinfo, dirinfo = nullptr; } void DialogSetup::on_toolButton_choose_path_jpg_released() { @@ -536,15 +538,6 @@ void DialogSetup::write_config() memset(buf, 0, 256);/// sprintf(buf, "CONFTHRESHOLD=%d\n", g_sys_conf.ConfThreshold); cfg_file.write(buf, strlen(buf)); - memset(buf, 0, 256);/// - sprintf(buf, "CONFTHRESHOLDS=%d|%d|%d|%d\n", g_sys_conf.ConfThresholds[0], g_sys_conf.ConfThresholds[1], g_sys_conf.ConfThresholds[2], g_sys_conf.ConfThresholds[3]); - cfg_file.write(buf, strlen(buf)); - memset(buf, 0, 256); - sprintf(buf, "UP_JD_SPACE=%d\n", g_sys_conf.Up_jd_Space); - cfg_file.write(buf, strlen(buf)); - memset(buf, 0, 256); - sprintf(buf, "DOWN_JD_SPACE=%d\n", g_sys_conf.Down_jd_Space); - cfg_file.write(buf, strlen(buf)); memset(buf, 0, 256); sprintf(buf, "AUTO_OPEN=%d\n", g_sys_conf.auto_open); cfg_file.write(buf, strlen(buf)); @@ -576,10 +569,7 @@ void DialogSetup::write_config() sprintf(buf, "MODELPATH=%s\n", g_sys_conf.model_path.toStdString().c_str()); cfg_file.write(buf, strlen(buf)); memset(buf, 0, 256); - sprintf(buf, "MODELNAME=%s\n", g_sys_conf.model1_name.toStdString().c_str()); - cfg_file.write(buf, strlen(buf)); - memset(buf, 0, 256); - sprintf(buf, "KZMODELNAME=%s\n", g_sys_conf.model2_name.toStdString().c_str()); + sprintf(buf, "MODELNAME=%s\n", g_sys_conf.model_name.toStdString().c_str()); cfg_file.write(buf, strlen(buf)); memset(buf, 0, 256); sprintf(buf, "JPGPATH=%s\n", g_sys_conf.model_jpg_path.toStdString().c_str()); diff --git a/Cigarette/dialogsetup.ui b/Cigarette/dialogsetup.ui index 500681b..428eb61 100644 --- a/Cigarette/dialogsetup.ui +++ b/Cigarette/dialogsetup.ui @@ -6,8 +6,8 @@ 0 0 - 660 - 992 + 682 + 900 @@ -24,37 +24,22 @@ background-color: rgb(240, 240, 240); - + 0 0 - 661 - 1000 + 683 + 900 - - - 0 - 0 - - - - - 0 - 0 - - - - true - - + 0 0 - 670 - 977 + 681 + 901 @@ -65,37 +50,41 @@ - 670 - 900 + 0 + 0 - + + true + + - 10 - 60 - 641 - 61 + 0 + -122 + 670 + 1000 - - - 寰蒋闆呴粦 - 12 - 75 - true - + + + 0 + 0 + - - 鍚姩璁剧疆 + + + 670 + 1000 + - + - 30 - 30 - 220 - 22 + 10 + 60 + 641 + 61 @@ -106,17 +95,59 @@ true - - 鑷姩鎵撳紑鎵鏈夌浉鏈 - - - - - - 380 - 30 - 261 - 21 + + 鍚姩璁剧疆 + + + + + 30 + 30 + 220 + 22 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鑷姩鎵撳紑鎵鏈夌浉鏈 + + + + + + 380 + 30 + 261 + 21 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 绋嬪簭鍚姩鍚庤嚜鍔ㄥ紑濮嬪伐浣 + + + + + + + 10 + 610 + 641 + 81 @@ -127,38 +158,173 @@ true - - 绋嬪簭鍚姩鍚庤嚜鍔ㄥ紑濮嬪伐浣 - - - - - - - 10 - 610 - 641 - 81 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 绠$悊鍛樺瘑鐮佷慨鏀 - - - - - 540 - 20 - 91 - 51 + + 绠$悊鍛樺瘑鐮佷慨鏀 + + + + + 540 + 20 + 91 + 51 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭畾 + + + + + + 190 + 30 + 61 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鏂板瘑鐮侊細 + + + + + + 440 + 32 + 91 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 250 + 30 + 101 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 360 + 30 + 81 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭瀵嗙爜锛 + + + + + + 90 + 30 + 91 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 20 + 30 + 61 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鍘熷瘑鐮侊細 + + + + + + + 10 + 180 + 640 + 278 @@ -169,17 +335,710 @@ true - - 纭畾 - - - - - - 190 - 30 - 61 - 31 + + 鐩告満鍙傛暟 + + + + + 20 + 40 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 1#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 210 + 40 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 210 + 70 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 20 + 70 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 2#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 510 + 70 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 40 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 1#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 320 + 70 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 2#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 510 + 40 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 210 + 100 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 20 + 130 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 4#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 210 + 130 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 20 + 100 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 3#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 510 + 130 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 100 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 3#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 320 + 130 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 4#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 510 + 100 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 680 + 90 + 91 + 51 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭畾 + + + + + + 20 + 160 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 5#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 20 + 190 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 6#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 20 + 220 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 7#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 210 + 160 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 210 + 190 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 210 + 220 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 160 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 5#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 320 + 190 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 6#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 320 + 220 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 7#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 510 + 160 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 510 + 190 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 510 + 220 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 20 + 250 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 8#鐩告満鏇濆厜鏃堕棿(寰)锛 + + + + + + 210 + 250 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 250 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 8#鐩告満妯℃嫙澧炵泭(0~64)锛 + + + + + + 510 + 250 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + + 10 + 770 + 641 + 148 @@ -190,17 +1049,374 @@ true - - 鏂板瘑鐮侊細 - - - - - - 440 - 32 - 91 - 31 + + 婊ゆ尝璁剧疆 + + + + + 20 + 30 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 1#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 210 + 30 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 510 + 30 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 30 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 2#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 510 + 60 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 20 + 60 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 3#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 210 + 60 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 320 + 60 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 4#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 680 + 50 + 91 + 51 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭畾 + + + + + + 20 + 90 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 5#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 320 + 90 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 6#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 20 + 120 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 7#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 320 + 120 + 180 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + 8#鐩告満婊ゆ尝鏃堕棿(寰)锛 + + + + + + 210 + 90 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 210 + 120 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 510 + 90 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + 510 + 120 + 90 + 20 + + + + + 寰蒋闆呴粦 + 10 + 75 + true + + + + + + + + + + + 10 + 120 + 641 + 61 @@ -211,20 +1427,101 @@ true - - - - - QLineEdit::Password - - - - - - 250 - 30 - 101 - 31 + + 瀛樺浘璁剧疆 + + + + + 30 + 30 + 90 + 21 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 涓嶅瓨 + + + + + + 230 + 30 + 90 + 21 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 瀛楴G + + + + + + 440 + 30 + 90 + 21 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鍏ㄥ瓨 + + + + + + 570 + 25 + 50 + 30 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭畾 + + + + + + + 110 + 930 + 131 + 51 @@ -236,19 +1533,16 @@ - - - - QLineEdit::Password + 淇濆瓨鍙傛暟 - + - 360 - 30 - 81 - 31 + 520 + 10 + 130 + 50 @@ -260,16 +1554,16 @@ - 纭瀵嗙爜锛 + 閫鍑虹郴缁 - + - 90 - 30 - 91 - 31 + 10 + 690 + 641 + 81 @@ -280,20 +1574,173 @@ true - - - - - QLineEdit::Password - - - - - - 20 - 30 - 61 - 31 + + 鎿嶄綔鍛樺瘑鐮佷慨鏀 + + + + + 190 + 30 + 61 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鏂板瘑鐮侊細 + + + + + + 440 + 32 + 91 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 250 + 30 + 101 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 360 + 30 + 81 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭瀵嗙爜锛 + + + + + + 90 + 30 + 91 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + + + + QLineEdit::Password + + + + + + 20 + 30 + 61 + 31 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 鍘熷瘑鐮侊細 + + + + + + 540 + 20 + 91 + 51 + + + + + 寰蒋闆呴粦 + 12 + 75 + true + + + + 纭畾 + + + + + + + 370 + 930 + 131 + 51 @@ -305,373 +1752,256 @@ - 鍘熷瘑鐮侊細 + 鍏抽棴绐楀彛 - - - - - 10 - 180 - 640 - 278 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鐩告満鍙傛暟 - - + - 20 - 40 - 180 - 20 + 220 + 10 + 130 + 50 寰蒋闆呴粦 - 10 + 12 75 true - 1#鐩告満鏇濆厜鏃堕棿(寰)锛 + 鏄剧ず妗岄潰 - + - 210 - 40 - 90 - 20 + 110 + 10 + 91 + 41 寰蒋闆呴粦 - 10 + 12 75 true - - - - - - - - 210 - 70 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - + + border-image: url(:/Cigarette/Resources/keyboard.png); - + 20 - 70 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 2#鐩告満鏇濆厜鏃堕棿(寰)锛 - - - - - - 510 - 70 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 320 - 40 - 180 - 20 + 20 + 81 + 21 寰蒋闆呴粦 - 10 + 12 75 true - 1#鐩告満妯℃嫙澧炵泭(0~64)锛 + 绯荤粺璁剧疆 - + - 320 - 70 - 180 - 20 + 40 + 460 + 101 + 41 寰蒋闆呴粦 - 10 + 12 75 true - 2#鐩告満妯℃嫙澧炵泭(0~64)锛 + 閰嶆柟璁剧疆 - + - 510 - 40 - 90 - 20 + 40 + 560 + 101 + 41 寰蒋闆呴粦 - 10 + 12 75 true - + 鎹㈢彮璁剧疆 - + - 210 - 100 - 90 - 20 + 40 + 510 + 101 + 41 寰蒋闆呴粦 - 10 + 12 75 true - + 浜ч噺缁熻 - + - 20 - 130 - 180 - 20 + 620 + 470 + 27 + 25 寰蒋闆呴粦 - 10 - 75 - true - 4#鐩告満鏇濆厜鏃堕棿(寰)锛 + ... - + - 210 - 130 - 90 - 20 + 190 + 470 + 171 + 30 寰蒋闆呴粦 - 10 + 12 75 true - - - - - - - 20 - 100 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - + 妯″瀷瀛樺偍璺緞 - - 3#鐩告満鏇濆厜鏃堕棿(寰)锛 + + Qt::AlignCenter - + - 510 - 130 - 90 - 20 + 370 + 470 + 241 + 30 寰蒋闆呴粦 10 - 75 - true - - - - + - 320 - 100 - 180 - 20 + 340 + 1020 + 91 + 21 寰蒋闆呴粦 - 10 75 true - 3#鐩告満妯℃嫙澧炵泭(0~64)锛 + 鍥剧墖瀛樺偍璺緞 - + - 320 - 130 - 180 - 20 + 440 + 1020 + 171 + 25 寰蒋闆呴粦 - 10 - 75 - true - - 4#鐩告満妯℃嫙澧炵泭(0~64)锛 - - + - 510 - 100 - 90 - 20 + 620 + 1020 + 27 + 26 寰蒋闆呴粦 - 10 - 75 - true - + ... - + - 680 - 90 - 91 - 51 + 370 + 10 + 130 + 50 @@ -683,1485 +2013,165 @@ - 纭畾 + 娓呯悊鍥剧墖 - + - 20 - 160 - 180 - 20 + 520 + 930 + 131 + 21 寰蒋闆呴粦 - 10 75 true - 5#鐩告満鏇濆厜鏃堕棿(寰)锛 + 娴嬭瘯鍗曞紶鍥剧墖 - + - 20 - 190 - 180 - 20 + 520 + 960 + 131 + 21 寰蒋闆呴粦 - 10 75 true - 6#鐩告満鏇濆厜鏃堕棿(寰)锛 + 娴嬭瘯澶氬紶鍥剧墖 - + - 20 - 220 - 180 - 20 + 190 + 520 + 171 + 30 寰蒋闆呴粦 - 10 + 12 75 true - 7#鐩告満鏇濆厜鏃堕棿(寰)锛 - - - - - - 210 - 160 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - + 閰嶇疆鏂囦欢瀛樺偍璺緞 - - + + Qt::AlignCenter - + - 210 - 190 - 90 - 20 + 370 + 520 + 241 + 30 寰蒋闆呴粦 10 - 75 - true - - - - + - 210 - 220 - 90 - 20 + 620 + 520 + 27 + 25 寰蒋闆呴粦 - 10 - 75 - true - + ... - + - 320 - 160 - 180 - 20 + 190 + 570 + 171 + 30 寰蒋闆呴粦 - 10 + 12 75 true - 5#鐩告満妯℃嫙澧炵泭(0~64)锛 - - - - - - 320 - 190 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - + 鍥剧墖瀛樺偍璺緞 - - 6#鐩告満妯℃嫙澧炵泭(0~64)锛 + + Qt::AlignCenter - + - 320 - 220 - 180 - 20 + 370 + 570 + 241 + 30 寰蒋闆呴粦 10 - 75 - true - - 7#鐩告満妯℃嫙澧炵泭(0~64)锛 - - + - 510 - 160 - 90 - 20 + 620 + 570 + 27 + 25 寰蒋闆呴粦 - 10 - 75 - true - + ... - - - - 510 - 190 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 510 - 220 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 20 - 250 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 8#鐩告満鏇濆厜鏃堕棿(寰)锛 - - - - - - 210 - 250 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 320 - 250 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 8#鐩告満妯℃嫙澧炵泭(0~64)锛 - - - - - - 510 - 250 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - - 10 - 770 - 641 - 148 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 婊ゆ尝璁剧疆 - - - - - 20 - 30 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 1#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 210 - 30 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 510 - 30 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 320 - 30 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 2#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 510 - 60 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 20 - 60 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 3#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 210 - 60 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 320 - 60 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 4#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 680 - 50 - 91 - 51 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 纭畾 - - - - - - 20 - 90 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 5#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 320 - 90 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 6#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 20 - 120 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 7#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 320 - 120 - 180 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - 8#鐩告満婊ゆ尝鏃堕棿(寰)锛 - - - - - - 210 - 90 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 210 - 120 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 510 - 90 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - 510 - 120 - 90 - 20 - - - - - 寰蒋闆呴粦 - 10 - 75 - true - - - - - - - - - - - 10 - 120 - 641 - 61 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 瀛樺浘璁剧疆 - - - - - 30 - 30 - 90 - 21 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 涓嶅瓨 - - - - - - 230 - 30 - 90 - 21 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 瀛楴G - - - - - - 440 - 30 - 90 - 21 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鍏ㄥ瓨 - - - - - - 570 - 25 - 50 - 30 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 纭畾 - - - - - - - 110 - 930 - 131 - 51 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 淇濆瓨鍙傛暟 - - - - - - 520 - 10 - 130 - 50 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 閫鍑虹郴缁 - - - - - - 10 - 690 - 641 - 81 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鎿嶄綔鍛樺瘑鐮佷慨鏀 - - - - - 190 - 30 - 61 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鏂板瘑鐮侊細 - - - - - - 440 - 32 - 91 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - - - - QLineEdit::Password - - - - - - 250 - 30 - 101 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - - - - QLineEdit::Password - - - - - - 360 - 30 - 81 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 纭瀵嗙爜锛 - - - - - - 90 - 30 - 91 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - - - - QLineEdit::Password - - - - - - 20 - 30 - 61 - 31 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鍘熷瘑鐮侊細 - - - - - - 540 - 20 - 91 - 51 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 纭畾 - - - - - - - 370 - 930 - 131 - 51 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鍏抽棴绐楀彛 - - - - - - 220 - 10 - 130 - 50 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鏄剧ず妗岄潰 - - - - - - 110 - 10 - 91 - 41 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - border-image: url(:/Cigarette/Resources/keyboard.png); - - - - - - - - - 20 - 20 - 81 - 21 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 绯荤粺璁剧疆 - - - - - - 40 - 460 - 101 - 41 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 閰嶆柟璁剧疆 - - - - - - 40 - 560 - 101 - 41 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鎹㈢彮璁剧疆 - - - - - - 40 - 510 - 101 - 41 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 浜ч噺缁熻 - - - - - - 620 - 470 - 27 - 25 - - - - - 寰蒋闆呴粦 - - - - ... - - - - - - 190 - 470 - 171 - 30 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 妯″瀷瀛樺偍璺緞 - - - Qt::AlignCenter - - - - - - 370 - 470 - 241 - 30 - - - - - 寰蒋闆呴粦 - 10 - - - - - - - 340 - 1020 - 91 - 21 - - - - - 寰蒋闆呴粦 - 75 - true - - - - 鍥剧墖瀛樺偍璺緞 - - - - - - 440 - 1020 - 171 - 25 - - - - - 寰蒋闆呴粦 - - - - - - - 620 - 1020 - 27 - 26 - - - - - 寰蒋闆呴粦 - - - - ... - - - - - - 370 - 10 - 130 - 50 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 娓呯悊鍥剧墖 - - - - - - 520 - 930 - 131 - 21 - - - - - 寰蒋闆呴粦 - 75 - true - - - - 娴嬭瘯鍗曞紶鍥剧墖 - - - - - - 520 - 960 - 131 - 21 - - - - - 寰蒋闆呴粦 - 75 - true - - - - 娴嬭瘯澶氬紶鍥剧墖 - - - - - - 190 - 520 - 171 - 30 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 閰嶇疆鏂囦欢瀛樺偍璺緞 - - - Qt::AlignCenter - - - - - - 370 - 520 - 241 - 30 - - - - - 寰蒋闆呴粦 - 10 - - - - - - - 620 - 520 - 27 - 25 - - - - - 寰蒋闆呴粦 - - - - ... - - - - - - 190 - 570 - 171 - 30 - - - - - 寰蒋闆呴粦 - 12 - 75 - true - - - - 鍥剧墖瀛樺偍璺緞 - - - Qt::AlignCenter - - - - - - 370 - 570 - 241 - 30 - - - - - 寰蒋闆呴粦 - 10 - - - - - - - 620 - 570 - 27 - 25 - - - - - 寰蒋闆呴粦 - - - - ... - diff --git a/Cigarette/output_statistic.cpp b/Cigarette/output_statistic.cpp index c35179a..b247149 100644 --- a/Cigarette/output_statistic.cpp +++ b/Cigarette/output_statistic.cpp @@ -82,11 +82,11 @@ void output_statistic::recMsgFromDialogSetup() for (int i = 0; i < NumberOfSupportedCameras; i++) { file_name = QString(STATISTIC_FILE).arg(i); file_path = g_conf_path.config_path + "/" + file_name; - //std::cout << "===>" << file_path.toStdString() << std::endl; file.setFileName(file_path); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); + //in.setCodec("UTF-8"); textBrowser_mat[i]->setText(in.readAll()); } else { diff --git a/Cigarette/plcsetup.cpp b/Cigarette/plcsetup.cpp index 94dc8af..1d4928c 100644 --- a/Cigarette/plcsetup.cpp +++ b/Cigarette/plcsetup.cpp @@ -244,7 +244,10 @@ void PlcSetup::handleTimeout() void PlcSetup::read_plc_items() { std::fstream cfg_file; - cfg_file.open(g_conf_path.config_path.toStdString() + "/" + PLC_ITEM_FILE); + QString plc_file = g_conf_path.config_path + "/" + PLC_CONFIG_FILE; + + cfg_file.open(plc_file.toLocal8Bit().constData()); + if (!cfg_file.is_open()) { std::cout << "Error: Open production file " << PLC_ITEM_FILE << std::endl; @@ -277,7 +280,8 @@ void PlcSetup::read_plc_items() void PlcSetup::save_plc_items() { std::fstream cfg_file; - cfg_file.open(g_conf_path.config_path.toStdString() + "/" + PLC_ITEM_FILE, std::ios::out | std::ios::trunc); + QString plc_file = g_conf_path.config_path + "/" + PLC_CONFIG_FILE; + cfg_file.open(plc_file.toLocal8Bit().constData(), std::ios::out | std::ios::trunc); if (cfg_file.good()) { for (int i = 0; i < m_plc_items.size(); i++) diff --git a/Cigarette/savethread.h b/Cigarette/savethread.h index 1775e25..8c6f708 100644 --- a/Cigarette/savethread.h +++ b/Cigarette/savethread.h @@ -55,7 +55,6 @@ protected: std::pair element; g_save_queue->take(element); std::string file_name = element.first; - //std::cout << file_name << std::endl; image = element.second; if (image.data) { @@ -78,7 +77,9 @@ protected: } if (!b_find) { - QString dir_str = QString::fromStdString(dir_path); + //QString dir_str = QString::fromStdString(dir_path); + QString dir_str = QString::fromLocal8Bit(QByteArray::fromRawData(dir_path.c_str(), dir_path.size())); + QDir dir; if (!dir.exists(dir_str)) { diff --git a/Cigarette/workthread.cpp b/Cigarette/workthread.cpp index 1f1e40e..1ac0c4d 100644 --- a/Cigarette/workthread.cpp +++ b/Cigarette/workthread.cpp @@ -1,6 +1,5 @@ #include "workthread.h" #include "alg_jd.h" -#include "alg_jd_ng.h" #include "common.h" #include "balluffcamera.h" #include "baslercamera.h" @@ -9,8 +8,6 @@ #include "exportData.h" extern AlgJd alg_jd[NumberOfSupportedCameras]; //检测胶点的AI算法 -extern AlgJd_ng alg_jd_ng[NumberOfSupportedCameras]; // ng模型 - extern ConfPath g_conf_path; extern SysConf g_sys_conf; //系统配置参数 extern DisplayLabelConf g_display_label_conf[NumberOfSupportedCameras]; @@ -18,8 +15,8 @@ extern DisplayLabelConf g_display_label_conf[NumberOfSupportedCameras]; extern int rotationAngle[NumberOfSupportedCameras]; //图片旋转角度 extern bool isNeedRotate[NumberOfSupportedCameras]; -extern SyncQueue> *g_save_queue; //图片保存队列 -extern SyncQueue> *g_image_queue[NumberOfSupportedCameras]; //int表示一个目标拍了几张 +extern SyncQueue >* g_save_queue; //图片保存队列 +extern SyncQueue >* g_image_queue[NumberOfSupportedCameras]; //int表示一个目标拍了几张 extern SyncQueue<_UDPSendInfo> *UDP_Info_queue; extern SyncQueue<_ExportDataInfo>* export_Data_Info_queue; extern PLCDevice* m_PLCDevice; @@ -62,9 +59,6 @@ void WorkThread::run() local_SysConf.shoot[local_camera_number] = g_sys_conf.shoot[local_camera_number]; local_SysConf.MisMatchAct = g_sys_conf.MisMatchAct; local_SysConf.ConfThreshold = g_sys_conf.ConfThreshold;// - local_SysConf.Up_jd_Space = g_sys_conf.Up_jd_Space; - local_SysConf.Down_jd_Space = g_sys_conf.Down_jd_Space; - for (int i = 0; i < 3; i++)local_SysConf.no[local_camera_number][i] = g_sys_conf.no[local_camera_number][i]; #ifdef DRAW_RECT @@ -79,6 +73,7 @@ void WorkThread::run() #endif } + QDateTime now_ts = QDateTime::currentDateTime(); std::pair element; local_g_image_queue->take(element); @@ -101,19 +96,18 @@ void WorkThread::run() { cv::cvtColor(image, image, CV_BGR2RGB); //灰度图像转为彩色图像 } - if (local_SysConf.shoot[local_camera_number] == unit_count) { exportDataInfo.shotCounts = unit_count; std::vector vec_in; int w = image.cols; int h = image.rows / unit_count; - for (int index = 0; index < unit_count; index++) + for(int index=0;index vec_out; - - //单张 - cv::Mat transits; - std::vector> results; - std::vector> results_ng; - //多张 - std::vector transits_ng; - std::vector>> vec_results; - std::vector>> vec_results_ng; + std::vector > > vec_results; QDateTime ts_start = QDateTime::currentDateTime(); - if (unit_count == 1) { - //std::vector> results; - //std::vector> results_ng; - cv::Mat imagein, imageout; + if(unit_count == 1){ + std::vector > results; + cv::Mat imagein,imageout; imagein = vec_in[0]; alg_jd[local_camera_number].detect(imagein, imageout, results); - transits = imageout.clone(); - alg_jd_ng[local_camera_number].detect_ng(imagein, transits, imageout, results_ng); vec_out.push_back(imageout.clone()); vec_results.push_back(results); - vec_results_ng.push_back(results_ng); - } - else { + }else{ alg_jd[local_camera_number].detect_batch(vec_in, vec_out, vec_results); - for (int i = 0; i < vec_out.size(); i++) - transits_ng.push_back(vec_out[i]); - alg_jd_ng[local_camera_number].detect_batch_ng(vec_in, transits_ng, vec_out, vec_results_ng); } QDateTime ts_jd = QDateTime::currentDateTime(); int time_process = ts_start.msecsTo(ts_jd); emit display_timecost(local_camera_number, time_process); - //UDPSendInfo.timecost = QString::number(time_process); - //exportDataInfo.timeCost = QString::number(time_process).toStdString(); + UDPSendInfo.timecost = QString::number(time_process); + exportDataInfo.timeCost = QString::number(time_process).toStdString(); cv::Mat image1; cv::Mat image2; - + QString jd_no; - for (int index = 0; index < unit_count; index++) + for(int index=0;index 0; } @@ -171,10 +149,10 @@ void WorkThread::run() UDPSendInfo.JD = jd_no; bool IsNG = false; - bool IsNG_model2[3] = { false }; - for (int index = 0; index < unit_count; index++) + for(int index=0;indexput(std::make_pair(file_name.toStdString(), m)); + + g_save_queue->put(std::make_pair(file_name.toLocal8Bit().constData(), m)); } } if (unit_count >= 2){ - image1 = vec_out[0].clone(); + image1 = vec_out[(result_index) % 2].clone(); #ifdef DRAW_RECT IsNG|=CheckSelectRects(image1,vec_results,(result_index) % 2,local_DisplayLabelConf,0); #endif @@ -211,53 +190,15 @@ void WorkThread::run() #endif } result_index++; - //exportDataInfo.isNg = IsNG; - - ////jinhuan+ - //if (vec_jd_results.size() && vec_kzjl_results.size()) - //{ - // //从上往下第一个胶点的中心y值 - // int top_jd_y = vec_jd_results[0].y + vec_jd_results[0].height / 2; - // //从上往下最后一个胶点的中心y值 - // int bottom_jd_y = vec_jd_results[vec_jd_results.size()-1].y + vec_jd_results[vec_jd_results.size()-1].height / 2; - // //卡纸的上边沿y值 - // int top_kz_y = vec_kzjl_results[0].tl().y; - // //卡纸的下边沿y值 - // int bottom_kz_y = vec_kzjl_results[0].br().y; - - // //if (abs(top_jd_y - top_kz_y) < local_SysConf.Up_jd_Space)IsNG=true;//像素 - // //if (abs(bottom_kz_y - bottom_jd_y) < local_SysConf.Down_jd_Space)IsNG = true;//像素 - // - - //} - //else - //{ - // IsNG = true;//卡纸和胶点数量不够 - //} - //if (vec_kzzz_results.size() != 0) {//卡纸有褶皱 - // IsNG = true; - //} - //if (vec_bm_results.size() != 0) {//薄膜有褶皱 - // IsNG = true; - //} - //if (vec_qb_results.size() != 0) {//卡纸有翘边 - // IsNG = true; - // IsNG_model2[2] = IsNG; - //} - ////jinhuan- - - for (int index = 0; index < unit_count; index++) - { - if (results_ng.size() != 0 || vec_results_ng[index].size() != 0) {//ng模型检测:有ng - IsNG = true; - IsNG_model2[index] = IsNG; - } - } + exportDataInfo.isNg = IsNG; if (!IsNG) { - emit event_ok(local_camera_number); - local_g_result_queue->put(true); + if (!g_debug_mode) + { + emit event_ok(local_camera_number); + local_g_result_queue->put(true); + } } else { @@ -271,24 +212,21 @@ void WorkThread::run() { for(int index=0;indexput(std::make_pair(file_name.toStdString(), m)); - /*m = vec_out[index].clone(); - file_name = g_conf_path.save_pics_path + "/ng_result/" + - now_ts.toString("yyyy-MM-dd") + "/" - + QString::number(local_camera_number + 1) + "/" + QString::number(index + 1) + "/" + - now_ts.toString("yyyy-MM-dd_HH-mm-ss_zzz_") + QString::number(local_camera_number + 1) + - "#" + "_" + QString::number(index + 1) + ".jpg"; - g_save_queue->put(std::make_pair(file_name.toStdString(), m));*/ - } + /*m = vec_out[index].clone(); + file_name = "D:/image/" + + now_ts.toString("yyyy-MM-dd") + + "/" + QString::number(local_camera_number + 1) + + "/ng_result/" + QString::number(index) + "/" + + now_ts.toString("yyyy-MM-dd_HH-mm-ss_zzz_") + "_" + QString::number(index) + ".bmp";*/ + //g_save_queue->put(std::make_pair(file_name.toStdString(), m)); + g_save_queue->put(std::make_pair(file_name.toLocal8Bit().constData(), m)); } } }