diff --git a/release/runner17_ValueDetect/Enchanter.exe b/release/runner17_ValueDetect/Enchanter.exe index 0b7a7e5..ed0378f 100644 Binary files a/release/runner17_ValueDetect/Enchanter.exe and b/release/runner17_ValueDetect/Enchanter.exe differ diff --git a/release/runner17_ValueDetect/dbLog.db b/release/runner17_ValueDetect/dbLog.db index 2f8ab22..d63d987 100644 Binary files a/release/runner17_ValueDetect/dbLog.db and b/release/runner17_ValueDetect/dbLog.db differ diff --git a/release/runner17_ValueDetect/language/English/lpmain_en.qm b/release/runner17_ValueDetect/language/English/lpmain_en.qm index b9dbe5b..3b2391e 100644 Binary files a/release/runner17_ValueDetect/language/English/lpmain_en.qm and b/release/runner17_ValueDetect/language/English/lpmain_en.qm differ diff --git a/release/runner17_ValueDetect/lpMain.dll b/release/runner17_ValueDetect/lpMain.dll index 7dc8b71..55c9c03 100644 Binary files a/release/runner17_ValueDetect/lpMain.dll and b/release/runner17_ValueDetect/lpMain.dll differ diff --git a/release/runner17_ValueDetect/lpbengine.dll b/release/runner17_ValueDetect/lpbengine.dll index f779d40..10f6274 100644 Binary files a/release/runner17_ValueDetect/lpbengine.dll and b/release/runner17_ValueDetect/lpbengine.dll differ diff --git a/release/runner17_ValueDetect/lpdesigner.dll b/release/runner17_ValueDetect/lpdesigner.dll index 8a13c2f..584f905 100644 Binary files a/release/runner17_ValueDetect/lpdesigner.dll and b/release/runner17_ValueDetect/lpdesigner.dll differ diff --git a/release/runner17_ValueDetect/showImg.ini b/release/runner17_ValueDetect/showImg.ini index 445735b..f0ba91a 100644 --- a/release/runner17_ValueDetect/showImg.ini +++ b/release/runner17_ValueDetect/showImg.ini @@ -1,7 +1,7 @@ [ShowImg] Scale_Stand=0.28294005293337054 Scale_Standard=0.2663824433072367 -Scale_Standard_1=0.4715957084312881 -Scale_Standard_2=0.2032795305783001 -ScaleA=0.24845275959570007 -ScaleB=0.2386627295411188 +Scale_Standard_1=1.9194786122322902 +Scale_Standard_2=1.3264992347590259 +ScaleA=0.15976595944488117 +ScaleB=0.1801233651213471 diff --git a/release/runner17_ValueDetect/user/StandImage_1.jpg b/release/runner17_ValueDetect/user/StandImage_1.jpg index a294f55..c8103bb 100644 Binary files a/release/runner17_ValueDetect/user/StandImage_1.jpg and b/release/runner17_ValueDetect/user/StandImage_1.jpg differ diff --git a/release/runner17_ValueDetect/user/globalConfig.json b/release/runner17_ValueDetect/user/globalConfig.json index b48ee30..6ae7256 100644 --- a/release/runner17_ValueDetect/user/globalConfig.json +++ b/release/runner17_ValueDetect/user/globalConfig.json @@ -3,11 +3,11 @@ "StationScale_2": 1.7149011188014898, "StationXOffset_1": 0, "StationXOffset_2": 1, - "StationYOffset_1": 0, + "StationYOffset_1": -200, "StationYOffset_2": 2, "length_1": 1, "length_2": 1000, - "onlineMode": false, + "onlineMode": true, "point1_x_1": 1925, "point1_x_2": 1313, "point1_y_1": 872, @@ -17,10 +17,72 @@ "point2_y_1": 950, "point2_y_2": 1527, "pointCircle": 50, + "station1_4p": { + "Realpoint1_x": 100, + "Realpoint1_y": 100, + "Realpoint2_x": 200, + "Realpoint2_y": 100, + "Realpoint3_x": 200, + "Realpoint3_y": 200, + "Realpoint4_x": 100, + "Realpoint4_y": 200, + "bXYTrans": false, + "dx": 0, + "dy": 0, + "m11": 1, + "m12": 0, + "m21": 0, + "m22": 1, + "pixpoint1_x": 100, + "pixpoint1_y": 100, + "pixpoint2_x": 200, + "pixpoint2_y": 100, + "pixpoint3_x": 200, + "pixpoint3_y": 200, + "pixpoint4_x": 100, + "pixpoint4_y": 200, + "testPoint_x": 150, + "testPoint_y": 150, + "xoffset": 0, + "yoffset": 0 + }, + "station2_4p": { + "Realpoint1_x": 100, + "Realpoint1_y": 100, + "Realpoint2_x": 200, + "Realpoint2_y": 100, + "Realpoint3_x": 200, + "Realpoint3_y": 200, + "Realpoint4_x": 100, + "Realpoint4_y": 200, + "bXYTrans": false, + "dx": 0, + "dy": 0, + "m11": 1, + "m12": 0, + "m21": 0, + "m22": 1, + "pixpoint1_x": 100, + "pixpoint1_y": 100, + "pixpoint2_x": 200, + "pixpoint2_y": 100, + "pixpoint3_x": 200, + "pixpoint3_y": 200, + "pixpoint4_x": 100, + "pixpoint4_y": 200, + "testPoint_x": 150, + "testPoint_y": 150, + "xoffset": 0, + "yoffset": 0 + }, "station_camkey_1": "MV-CA050-10GC 00784638609", "station_camkey_2": "MV-CA050-10GC 10784638609", "station_runModel_1": "B2", "station_runModel_2": "A1", "station_solution_1": "1_模型列表", - "station_solution_2": "2_模型列表" + "station_solution_2": "2_模型列表", + "station_xytrans_1": false, + "station_xytrans_2": false, + "trigerFilter": 1000, + "use4pointstand": true } diff --git a/release/runner17_ValueDetect/user/plcIndex.json b/release/runner17_ValueDetect/user/plcIndex.json index 8ae62e5..90d560b 100644 --- a/release/runner17_ValueDetect/user/plcIndex.json +++ b/release/runner17_ValueDetect/user/plcIndex.json @@ -1,22 +1,26 @@ { "1_模型列表": [ { - "Name": "2", - "PlcIndex": 1 + "Name": "A1", + "PlcIndex": 2 }, { - "Name": "A1", - "PlcIndex": 33 + "Name": "B2", + "PlcIndex": 1 } ], "2_模型列表": [ { "Name": "2", - "PlcIndex": 1 + "PlcIndex": 3 }, { "Name": "A1", - "PlcIndex": 14 + "PlcIndex": 2 + }, + { + "Name": "B2", + "PlcIndex": 1 } ] } diff --git a/release/气门芯定位检测更新内容.txt b/release/气门芯定位检测更新内容.txt index d613a67..68291a1 100644 --- a/release/气门芯定位检测更新内容.txt +++ b/release/气门芯定位检测更新内容.txt @@ -55,3 +55,6 @@ 2021-10-28 1、修复空型号还能正常添加的bug 2、调整控件按钮的显示大小和字体 +2021-11-03 +1、增加4点场景标定支持,通过系统参数设置页面勾选打开。默认情况下使用2点标定 +2、UI相关调整 美化和增加提示 \ No newline at end of file diff --git a/runner17/lpMain.dll b/runner17/lpMain.dll index 6ba0f8f..55c9c03 100644 Binary files a/runner17/lpMain.dll and b/runner17/lpMain.dll differ diff --git a/runner17/lpMaind.dll b/runner17/lpMaind.dll index bb66f51..ed7251f 100644 Binary files a/runner17/lpMaind.dll and b/runner17/lpMaind.dll differ diff --git a/runner17/lpdesigner.dll b/runner17/lpdesigner.dll index 584f905..860227a 100644 Binary files a/runner17/lpdesigner.dll and b/runner17/lpdesigner.dll differ diff --git a/runner17/lpdesignerd.dll b/runner17/lpdesignerd.dll index 4a21be1..9a9c1da 100644 Binary files a/runner17/lpdesignerd.dll and b/runner17/lpdesignerd.dll differ diff --git a/runner17/showImg.ini b/runner17/showImg.ini index d07bc3a..74b4f5a 100644 --- a/runner17/showImg.ini +++ b/runner17/showImg.ini @@ -1,7 +1,7 @@ [ShowImg] Scale_Stand=0.28294005293337054 Scale_Standard=0.2663824433072367 -Scale_Standard_1=2.385268960095239 -Scale_Standard_2=0.2032795305783001 -ScaleA=0.46703665939247824 -ScaleB=0.23141863221833192 +Scale_Standard_1=0.22628052895433784 +Scale_Standard_2=0.30910219214816836 +ScaleA=0.15779670128476 +ScaleB=0.16615203945157053 diff --git a/runner17/solutions/1_模型列表/123/1_7_3_18_in.wsf b/runner17/solutions/1_模型列表/123/1_7_3_18_in.wsf index e94938d..ea13977 100644 Binary files a/runner17/solutions/1_模型列表/123/1_7_3_18_in.wsf and b/runner17/solutions/1_模型列表/123/1_7_3_18_in.wsf differ diff --git a/runner17/solutions/1_模型列表/123/1_7_3_19_in.wsf b/runner17/solutions/1_模型列表/123/1_7_3_19_in.wsf index 4e2f3ac..42f9a9c 100644 Binary files a/runner17/solutions/1_模型列表/123/1_7_3_19_in.wsf and b/runner17/solutions/1_模型列表/123/1_7_3_19_in.wsf differ diff --git a/runner17/solutions/1_模型列表/123/1_7_3_7_in.wsf b/runner17/solutions/1_模型列表/123/1_7_3_7_in.wsf index 0e979da..0dff3c9 100644 Binary files a/runner17/solutions/1_模型列表/123/1_7_3_7_in.wsf and b/runner17/solutions/1_模型列表/123/1_7_3_7_in.wsf differ diff --git a/runner17/solutions/1_模型列表/123/taskinfo.json b/runner17/solutions/1_模型列表/123/taskinfo.json index bb36675..5e01759 100644 --- a/runner17/solutions/1_模型列表/123/taskinfo.json +++ b/runner17/solutions/1_模型列表/123/taskinfo.json @@ -171,7 +171,7 @@ "out_param_name": "startDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 829.2643432617188 + "out_param_value": 610.9727172851562 }, { "out_param_description": " ", @@ -182,7 +182,7 @@ "out_param_name": "startOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 902 + "out_param_value": 1844 }, { "out_param_description": "", @@ -193,7 +193,7 @@ "out_param_name": "valveDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 616.8917846679688 + "out_param_value": 610.9514770507812 }, { "out_param_description": "", @@ -204,7 +204,7 @@ "out_param_name": "valveOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 3106 + "out_param_value": 1842 }, { "out_param_description": "", @@ -246,7 +246,7 @@ "out_param_name": "withinOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 466 + "out_param_value": 211 } ], "paramArray": [ @@ -264,8 +264,8 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1718.0960693359375, - "roi_item_value2": 1422.5601806640625, + "roi_item_value1": 707.203369140625, + "roi_item_value2": 999.3842163085938, "roi_item_value3": 45.5 } ] @@ -285,8 +285,8 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1312.7010498046875, - "roi_item_value2": 125.04462432861328, + "roi_item_value1": 707.316162109375, + "roi_item_value2": 1001.1607055664062, "roi_item_value3": 48.5 } ] @@ -330,9 +330,9 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1865.302734375, - "roi_item_value2": 1198.8016357421875, - "roi_item_value3": 67.5 + "roi_item_value1": 737.2562866210938, + "roi_item_value2": 777.664306640625, + "roi_item_value3": 84.5 } ] ] @@ -389,7 +389,7 @@ ] }, { - "algo_OutParam_base_id": 17, + "algo_OutParam_base_id": 19, "algo_base_id": 13, "algo_description": "", "algo_exec_enabled": true, @@ -409,7 +409,17 @@ "out_param_name": "angle", "out_param_save": false, "out_param_type": 3, - "out_param_value": 220.3695 + "out_param_value": 223.6545 + }, + { + "out_param_description": "", + "out_param_dest_algo_id": -1, + "out_param_dest_param_id": -1, + "out_param_dest_task_id": -1, + "out_param_id": 18, + "out_param_name": "centerPoint", + "out_param_save": false, + "out_param_type": 24 }, { "out_param_description": "错误类型", @@ -432,6 +442,16 @@ "out_param_save": false, "out_param_type": 4 }, + { + "out_param_description": "", + "out_param_dest_algo_id": -1, + "out_param_dest_param_id": -1, + "out_param_dest_task_id": -1, + "out_param_id": 19, + "out_param_name": "imageName", + "out_param_save": false, + "out_param_type": 24 + }, { "out_param_description": "结果提示", "out_param_dest_algo_id": -1, @@ -452,7 +472,7 @@ "out_param_name": "score", "out_param_save": false, "out_param_type": 3, - "out_param_value": 1 + "out_param_value": 0.9590626955032349 } ], "paramArray": [ @@ -622,7 +642,7 @@ "param_src_param_id": 16, "param_src_task_id": -1, "param_type": 3, - "param_value": 829.2643432617188 + "param_value": 610.9727172851562 }, { "param_description": " ", @@ -634,7 +654,7 @@ "param_src_param_id": 15, "param_src_task_id": -1, "param_type": 0, - "param_value": 902 + "param_value": 1844 }, { "param_description": " ", @@ -646,7 +666,7 @@ "param_src_param_id": 3, "param_src_task_id": -1, "param_type": 3, - "param_value": 616.8917846679688 + "param_value": 610.9514770507812 }, { "param_description": " ", @@ -658,7 +678,7 @@ "param_src_param_id": 5, "param_src_task_id": -1, "param_type": 0, - "param_value": 3106 + "param_value": 1842 }, { "param_description": " ", @@ -718,7 +738,7 @@ "param_src_param_id": 8, "param_src_task_id": -1, "param_type": 0, - "param_value": 466 + "param_value": 211 } ] } diff --git a/runner17/solutions/1_模型列表/A1/1_2_3_18_in.wsf b/runner17/solutions/1_模型列表/A1/1_2_3_18_in.wsf index ef4cd22..249832d 100644 Binary files a/runner17/solutions/1_模型列表/A1/1_2_3_18_in.wsf and b/runner17/solutions/1_模型列表/A1/1_2_3_18_in.wsf differ diff --git a/runner17/solutions/1_模型列表/A1/1_2_3_19_in.wsf b/runner17/solutions/1_模型列表/A1/1_2_3_19_in.wsf index d2d3199..b939ef6 100644 Binary files a/runner17/solutions/1_模型列表/A1/1_2_3_19_in.wsf and b/runner17/solutions/1_模型列表/A1/1_2_3_19_in.wsf differ diff --git a/runner17/solutions/1_模型列表/A1/taskinfo.json b/runner17/solutions/1_模型列表/A1/taskinfo.json index 59b03b7..ceeba21 100644 --- a/runner17/solutions/1_模型列表/A1/taskinfo.json +++ b/runner17/solutions/1_模型列表/A1/taskinfo.json @@ -171,7 +171,7 @@ "out_param_name": "startDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 818.600830078125 + "out_param_value": 817.9850463867188 }, { "out_param_description": " ", @@ -182,7 +182,7 @@ "out_param_name": "startOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 900 + "out_param_value": 899 }, { "out_param_description": "", @@ -193,7 +193,7 @@ "out_param_name": "valveDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 600.9156494140625 + "out_param_value": 602.586181640625 }, { "out_param_description": "", @@ -204,7 +204,7 @@ "out_param_name": "valveOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 3106 + "out_param_value": 3108 }, { "out_param_description": "", @@ -246,7 +246,7 @@ "out_param_name": "withinOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 459 + "out_param_value": 460 } ], "paramArray": [ @@ -347,8 +347,8 @@ "param_src_param_id": 1, "param_src_task_id": -1, "param_type": 6, - "param_value_point_1": 1314.0406494140625, - "param_value_point_2": 955.4739379882812 + "param_value_point_1": 1312.1961669921875, + "param_value_point_2": 954.859130859375 }, { "param_description": "无气门芯识别", @@ -389,7 +389,7 @@ ] }, { - "algo_OutParam_base_id": 19, + "algo_OutParam_base_id": 21, "algo_base_id": 13, "algo_description": "", "algo_exec_enabled": true, @@ -409,14 +409,14 @@ "out_param_name": "angle", "out_param_save": false, "out_param_type": 3, - "out_param_value": 220.56674999999998 + "out_param_value": 220.76000000000002 }, { "out_param_description": "", "out_param_dest_algo_id": -1, "out_param_dest_param_id": -1, "out_param_dest_task_id": -1, - "out_param_id": 18, + "out_param_id": 20, "out_param_name": "centerPoint", "out_param_save": false, "out_param_type": 24 @@ -447,7 +447,7 @@ "out_param_dest_algo_id": -1, "out_param_dest_param_id": -1, "out_param_dest_task_id": -1, - "out_param_id": 19, + "out_param_id": 21, "out_param_name": "imageName", "out_param_save": false, "out_param_type": 24 @@ -472,7 +472,7 @@ "out_param_name": "score", "out_param_save": false, "out_param_type": 3, - "out_param_value": 1 + "out_param_value": 0.9926777482032776 } ], "paramArray": [ @@ -570,8 +570,8 @@ "param_src_param_id": 1, "param_src_task_id": -1, "param_type": 6, - "param_value_point_1": 1314.0406494140625, - "param_value_point_2": 955.4739379882812 + "param_value_point_1": 1312.1961669921875, + "param_value_point_2": 954.859130859375 }, { "param_description": "是否开启中心定位,0关闭,1开启", @@ -642,7 +642,7 @@ "param_src_param_id": 16, "param_src_task_id": -1, "param_type": 3, - "param_value": 818.600830078125 + "param_value": 817.9850463867188 }, { "param_description": " ", @@ -654,7 +654,7 @@ "param_src_param_id": 15, "param_src_task_id": -1, "param_type": 0, - "param_value": 900 + "param_value": 899 }, { "param_description": " ", @@ -666,7 +666,7 @@ "param_src_param_id": 3, "param_src_task_id": -1, "param_type": 3, - "param_value": 600.9156494140625 + "param_value": 602.586181640625 }, { "param_description": " ", @@ -678,7 +678,7 @@ "param_src_param_id": 5, "param_src_task_id": -1, "param_type": 0, - "param_value": 3106 + "param_value": 3108 }, { "param_description": " ", @@ -738,7 +738,7 @@ "param_src_param_id": 8, "param_src_task_id": -1, "param_type": 0, - "param_value": 459 + "param_value": 460 } ] } diff --git a/runner17/solutions/1_模型列表/D4/1_5_3_18_in.wsf b/runner17/solutions/1_模型列表/D4/1_5_3_18_in.wsf index e6c3c35..6928f26 100644 Binary files a/runner17/solutions/1_模型列表/D4/1_5_3_18_in.wsf and b/runner17/solutions/1_模型列表/D4/1_5_3_18_in.wsf differ diff --git a/runner17/solutions/1_模型列表/D4/1_5_3_19_in.wsf b/runner17/solutions/1_模型列表/D4/1_5_3_19_in.wsf index d09ba46..bab1042 100644 Binary files a/runner17/solutions/1_模型列表/D4/1_5_3_19_in.wsf and b/runner17/solutions/1_模型列表/D4/1_5_3_19_in.wsf differ diff --git a/runner17/solutions/1_模型列表/D4/1_5_3_7_in.wsf b/runner17/solutions/1_模型列表/D4/1_5_3_7_in.wsf index b4e37d8..865f3ba 100644 Binary files a/runner17/solutions/1_模型列表/D4/1_5_3_7_in.wsf and b/runner17/solutions/1_模型列表/D4/1_5_3_7_in.wsf differ diff --git a/runner17/solutions/1_模型列表/D4/taskinfo.json b/runner17/solutions/1_模型列表/D4/taskinfo.json index dc66a38..185949d 100644 --- a/runner17/solutions/1_模型列表/D4/taskinfo.json +++ b/runner17/solutions/1_模型列表/D4/taskinfo.json @@ -58,9 +58,9 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1210.0225830078125, - "roi_item_value2": 944.5979614257812, - "roi_item_value3": 212 + "roi_item_value1": 1315.5787353515625, + "roi_item_value2": 952.7072143554688, + "roi_item_value3": 222 } ] ] @@ -109,7 +109,7 @@ "out_param_name": "barNum", "out_param_save": false, "out_param_type": 0, - "out_param_value": 6 + "out_param_value": 5 }, { "out_param_description": "", @@ -171,7 +171,7 @@ "out_param_name": "startDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 630.7222290039062 + "out_param_value": 610.8221435546875 }, { "out_param_description": " ", @@ -182,7 +182,7 @@ "out_param_name": "startOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 3473 + "out_param_value": 904 }, { "out_param_description": "", @@ -193,7 +193,7 @@ "out_param_name": "valveDis", "out_param_save": false, "out_param_type": 3, - "out_param_value": 607.931884765625 + "out_param_value": 616.267578125 }, { "out_param_description": "", @@ -204,7 +204,7 @@ "out_param_name": "valveOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 2294 + "out_param_value": 909 }, { "out_param_description": "", @@ -225,7 +225,7 @@ "out_param_name": "valveWidth", "out_param_save": false, "out_param_type": 3, - "out_param_value": 45.5 + "out_param_value": 43 }, { "out_param_description": "", @@ -246,7 +246,7 @@ "out_param_name": "withinOffset", "out_param_save": false, "out_param_type": 0, - "out_param_value": 397 + "out_param_value": 473 } ], "paramArray": [ @@ -264,9 +264,9 @@ [ { "roi_item_type": 1, - "roi_item_value1": 815.1021118164062, - "roi_item_value2": 1406.787353515625, - "roi_item_value3": 45.5 + "roi_item_value1": 1305.5015869140625, + "roi_item_value2": 336.5220642089844, + "roi_item_value3": 43 } ] ] @@ -285,8 +285,8 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1825.317626953125, - "roi_item_value2": 1083.243408203125, + "roi_item_value1": 1310.765380859375, + "roi_item_value2": 341.9039611816406, "roi_item_value3": 48.5 } ] @@ -311,10 +311,10 @@ "param_name": "barNum", "param_show": true, "param_src_algo_id": -1, - "param_src_param_id": -1, + "param_src_param_id": 0, "param_src_task_id": -1, "param_type": 0, - "param_value": 6 + "param_value": 5 }, { "param_description": "辐条模板", @@ -330,9 +330,9 @@ [ { "roi_item_type": 1, - "roi_item_value1": 1005.6840209960938, - "roi_item_value2": 1494.5419921875, - "roi_item_value3": 67.5 + "roi_item_value1": 1061.2255859375, + "roi_item_value2": 419.99847412109375, + "roi_item_value3": 112 } ] ] @@ -347,8 +347,8 @@ "param_src_param_id": 1, "param_src_task_id": -1, "param_type": 6, - "param_value_point_1": 1210.0225830078125, - "param_value_point_2": 944.5979614257812 + "param_value_point_1": 1315.5787353515625, + "param_value_point_2": 952.7072143554688 }, { "param_description": "无气门芯识别", @@ -389,7 +389,7 @@ ] }, { - "algo_OutParam_base_id": 15, + "algo_OutParam_base_id": 17, "algo_base_id": 13, "algo_description": "", "algo_exec_enabled": true, @@ -409,7 +409,17 @@ "out_param_name": "angle", "out_param_save": false, "out_param_type": 3, - "out_param_value": 241.9585 + "out_param_value": 0.41050000000000003 + }, + { + "out_param_description": "", + "out_param_dest_algo_id": -1, + "out_param_dest_param_id": -1, + "out_param_dest_task_id": -1, + "out_param_id": 16, + "out_param_name": "centerPoint", + "out_param_save": false, + "out_param_type": 24 }, { "out_param_description": "错误类型", @@ -432,6 +442,16 @@ "out_param_save": false, "out_param_type": 4 }, + { + "out_param_description": "", + "out_param_dest_algo_id": -1, + "out_param_dest_param_id": -1, + "out_param_dest_task_id": -1, + "out_param_id": 17, + "out_param_name": "imageName", + "out_param_save": false, + "out_param_type": 24 + }, { "out_param_description": "结果提示", "out_param_dest_algo_id": -1, @@ -452,7 +472,7 @@ "out_param_name": "score", "out_param_save": false, "out_param_type": 3, - "out_param_value": 1 + "out_param_value": 0.9991053938865662 } ], "paramArray": [ @@ -490,7 +510,7 @@ "param_src_param_id": 9, "param_src_task_id": -1, "param_type": 0, - "param_value": 6 + "param_value": 5 }, { "param_description": "辐条得分值", @@ -550,8 +570,8 @@ "param_src_param_id": 1, "param_src_task_id": -1, "param_type": 6, - "param_value_point_1": 1207.2928466796875, - "param_value_point_2": 947.32763671875 + "param_value_point_1": 1315.5787353515625, + "param_value_point_2": 952.7072143554688 }, { "param_description": "是否开启中心定位,0关闭,1开启", @@ -622,7 +642,7 @@ "param_src_param_id": 16, "param_src_task_id": -1, "param_type": 3, - "param_value": 632.7935791015625 + "param_value": 610.8221435546875 }, { "param_description": " ", @@ -634,7 +654,7 @@ "param_src_param_id": 15, "param_src_task_id": -1, "param_type": 0, - "param_value": 3475 + "param_value": 904 }, { "param_description": " ", @@ -646,7 +666,7 @@ "param_src_param_id": 3, "param_src_task_id": -1, "param_type": 3, - "param_value": 604.0834350585938 + "param_value": 616.267578125 }, { "param_description": " ", @@ -658,7 +678,7 @@ "param_src_param_id": 5, "param_src_task_id": -1, "param_type": 0, - "param_value": 2295 + "param_value": 909 }, { "param_description": " ", @@ -682,7 +702,7 @@ "param_src_param_id": 4, "param_src_task_id": -1, "param_type": 3, - "param_value": 45.5 + "param_value": 43 }, { "param_description": " ", @@ -718,7 +738,7 @@ "param_src_param_id": 8, "param_src_task_id": -1, "param_type": 0, - "param_value": 396 + "param_value": 473 } ] } diff --git a/runner17/solutions/1_模型列表/info.json b/runner17/solutions/1_模型列表/info.json index 55d7b6c..3fdc0a6 100644 --- a/runner17/solutions/1_模型列表/info.json +++ b/runner17/solutions/1_模型列表/info.json @@ -5,8 +5,9 @@ "solution_type": 1, "tasklist": [ "123", + "2423423", "A1", - "B2", + "AAA", "C3", "D4", "template" diff --git a/runner17/user/plcIndex.json b/runner17/user/plcIndex.json index 8ae62e5..3009e76 100644 --- a/runner17/user/plcIndex.json +++ b/runner17/user/plcIndex.json @@ -1,12 +1,16 @@ { "1_模型列表": [ { - "Name": "2", - "PlcIndex": 1 + "Name": "123", + "PlcIndex": 2 }, { "Name": "A1", "PlcIndex": 33 + }, + { + "Name": "D4", + "PlcIndex": 1 } ], "2_模型列表": [ @@ -17,6 +21,10 @@ { "Name": "A1", "PlcIndex": 14 + }, + { + "Name": "B2", + "PlcIndex": 2 } ] } diff --git a/runner17/user/systemConfig.ini b/runner17/user/systemConfig.ini index c6cdd28..6105af9 100644 --- a/runner17/user/systemConfig.ini +++ b/runner17/user/systemConfig.ini @@ -6,9 +6,9 @@ Port=COM3 Baute=115200 [CheckThread] -days=7 +days=1 days_dir=30 -spacesize=10 +spacesize=100 Enable_RltImg=true Enable_SrcImg=true diff --git a/src/lpMain/Resource/img.png b/src/lpMain/Resource/img.png new file mode 100644 index 0000000..ec4316a Binary files /dev/null and b/src/lpMain/Resource/img.png differ diff --git a/src/lpMain/Resource/lock-open.png b/src/lpMain/Resource/lock-open.png new file mode 100644 index 0000000..c0a18bb Binary files /dev/null and b/src/lpMain/Resource/lock-open.png differ diff --git a/src/lpMain/Resource/lock.png b/src/lpMain/Resource/lock.png new file mode 100644 index 0000000..cafeeae Binary files /dev/null and b/src/lpMain/Resource/lock.png differ diff --git a/src/lpMain/lpImageCaliUI.cpp b/src/lpMain/lpImageCaliUI.cpp index cc21239..56945a6 100644 --- a/src/lpMain/lpImageCaliUI.cpp +++ b/src/lpMain/lpImageCaliUI.cpp @@ -115,6 +115,7 @@ void lpImageCaliUI::showEvent(QShowEvent *event) m_srcImgView_1->setLockAll(true); } ui.m_pbLock->setText(tr("解锁")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); } { ui.m_lineEdit_P1X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->point1_2.x())); @@ -150,6 +151,7 @@ void lpImageCaliUI::showEvent(QShowEvent *event) m_srcImgView_2->setLockAll(true); } ui.m_pbLock_2->setText(tr("解锁")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); } } @@ -194,6 +196,7 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() m_srcImgView_1->setLabelVisible(true); m_srcImgView_1->setLockAll(true); ui.m_pbLock->setText(tr("解锁")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); } delete createfile; createfile = nullptr; @@ -229,6 +232,7 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() m_srcImgView_2->setLabelVisible(true); m_srcImgView_2->setLockAll(true); ui.m_pbLock_2->setText(tr("解锁")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); } delete createfile; createfile = nullptr; @@ -248,6 +252,12 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() lpGlobalConfig::instance()->fLength_1 = length; lpGlobalConfig::instance()->m_StationScale_1 = scale; lpGlobalConfig::instance()->writeConfig(); + ui.label_info->setText("参数已生效"); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } else if ("m_pbApply_2" == strObj) { @@ -263,6 +273,12 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() lpGlobalConfig::instance()->fLength_2 = length; lpGlobalConfig::instance()->m_StationScale_2 = scale; lpGlobalConfig::instance()->writeConfig(); + ui.label_info_2->setText("参数已生效"); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } else if("m_pbExit" == strObj) { @@ -273,10 +289,17 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() QString str = ui.m_pbLock->text(); if (str == tr("解锁")) { ui.m_pbLock->setText(tr("上锁")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock-open.png")); if (m_srcImgView_1) { m_srcImgView_1->setLockAll(false); } + ui.label_info->setText("已解锁"); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } else { if (m_srcImgView_1) @@ -284,6 +307,13 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() m_srcImgView_1->setLockAll(true); } ui.m_pbLock->setText(tr("解锁")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); + ui.label_info->setText("已上锁"); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } } else if ("m_pbLock_2" == strObj) @@ -291,10 +321,17 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() QString str = ui.m_pbLock_2->text(); if (str == tr("解锁")) { ui.m_pbLock_2->setText(tr("上锁")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock-open.png")); if (m_srcImgView_2) { m_srcImgView_2->setLockAll(false); } + ui.label_info_2->setText("已解锁"); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } else { if (m_srcImgView_2) @@ -302,6 +339,13 @@ Q_SLOT void lpImageCaliUI::onButtonClicked() m_srcImgView_2->setLockAll(true); } ui.m_pbLock_2->setText(tr("解锁")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); + ui.label_info_2->setText("已上锁"); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } } } } @@ -415,7 +459,7 @@ Q_SLOT void lpImageCaliUI::onRoiLockIng(QString strName) if (sender() == m_srcImgView_1) { ui.label_info->setText("不能操作,请解锁"); - ui.label_info->setStyleSheet("background-color: rgb(255, 68, 55);"); + ui.label_info->setStyleSheet("background-color: rgb(200, 68, 55);"); if (m_timerID == 0) { m_timerID = startTimer(1000); @@ -424,7 +468,7 @@ Q_SLOT void lpImageCaliUI::onRoiLockIng(QString strName) else if (sender() == m_srcImgView_2) { ui.label_info_2->setText("不能操作,请解锁"); - ui.label_info_2->setStyleSheet("background-color: rgb(255, 68, 55);"); + ui.label_info_2->setStyleSheet("background-color: rgb(200, 68, 55);"); if (m_timerID == 0) { m_timerID = startTimer(1000); diff --git a/src/lpMain/lpImageCaliUI.ui b/src/lpMain/lpImageCaliUI.ui index 976431c..51a09fb 100644 --- a/src/lpMain/lpImageCaliUI.ui +++ b/src/lpMain/lpImageCaliUI.ui @@ -160,6 +160,9 @@ 1200 + + true + @@ -167,6 +170,9 @@ 1200 + + true + @@ -174,6 +180,9 @@ 1200 + + true + @@ -187,6 +196,9 @@ 1200 + + true + diff --git a/src/lpMain/lpMain.qrc b/src/lpMain/lpMain.qrc index 78c45a9..0fbaa5d 100644 --- a/src/lpMain/lpMain.qrc +++ b/src/lpMain/lpMain.qrc @@ -24,5 +24,8 @@ Resource/no-img.png + Resource/img.png + Resource/lock.png + Resource/lock-open.png diff --git a/tpvs17/lpMain/CMainWin.cpp b/tpvs17/lpMain/CMainWin.cpp index 529615b..a8f3f19 100644 --- a/tpvs17/lpMain/CMainWin.cpp +++ b/tpvs17/lpMain/CMainWin.cpp @@ -126,6 +126,7 @@ CMainWin::CMainWin(QWidget *parent) m_pWfCtrl->ISelModel(lpGlobalConfig::instance()->m_StationSolution_2, lpGlobalConfig::instance()->m_StationRunModel_2); m_pImageCaliUI = new lpImageCaliUI();//图像标定页面 + m_pImageCaliUI4P = new lpImageCaliUI4P();//图像标定页面 lpGlobalData::instance()->m_bCheckLinese = lpCheckKey::instance()->checkLinese(); m_pCheckLineseUI = new QCryptokeyUI(); connect(m_pCheckLineseUI, SIGNAL(sgRegisterFinish(bool)), this, SLOT(onLineseCheck(bool))); @@ -238,6 +239,11 @@ CMainWin::~CMainWin() delete m_pImageCaliUI; m_pImageCaliUI = nullptr; } + if (m_pImageCaliUI4P) + { + delete m_pImageCaliUI4P; + m_pImageCaliUI4P = nullptr; + } if (m_pCheckLineseUI) { delete m_pCheckLineseUI; @@ -689,16 +695,32 @@ Q_SLOT void CMainWin::onActionClicked() } } else if ("actionStandard" == strObj) { - if (m_pImageCaliUI) { - m_pImageCaliUI->setParent(this); - m_pImageCaliUI->setWindowTitle(tr("图像标定")); - m_pImageCaliUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); - m_pImageCaliUI->setWindowIcon(QIcon(WINDOWS_ICON)); - m_pImageCaliUI->setWindowModality(Qt::ApplicationModal); - m_pImageCaliUI->setAttribute(Qt::WA_ShowModal, true); - if (m_solotions.size() <= 1) - m_pImageCaliUI->setStationFlags(false); - m_pImageCaliUI->show(); + if (lpGlobalConfig::instance()->bUse4PointStand == true) + { + if (m_pImageCaliUI4P) { + m_pImageCaliUI4P->setParent(this); + m_pImageCaliUI4P->setWindowTitle(tr("图像标定 4点标定")); + m_pImageCaliUI4P->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pImageCaliUI4P->setWindowIcon(QIcon(WINDOWS_ICON)); + m_pImageCaliUI4P->setWindowModality(Qt::ApplicationModal); + m_pImageCaliUI4P->setAttribute(Qt::WA_ShowModal, true); + if (m_solotions.size() <= 1) + m_pImageCaliUI4P->setStationFlags(false); + m_pImageCaliUI4P->show(); + } + } + else { + if (m_pImageCaliUI) { + m_pImageCaliUI->setParent(this); + m_pImageCaliUI->setWindowTitle(tr("图像标定 2点标定")); + m_pImageCaliUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); + m_pImageCaliUI->setWindowIcon(QIcon(WINDOWS_ICON)); + m_pImageCaliUI->setWindowModality(Qt::ApplicationModal); + m_pImageCaliUI->setAttribute(Qt::WA_ShowModal, true); + if (m_solotions.size() <= 1) + m_pImageCaliUI->setStationFlags(false); + m_pImageCaliUI->show(); + } } } else if ("actionRegister" == strObj) { @@ -1443,13 +1465,28 @@ void CMainWin::IEngineResult(QVariantMap vMap) int stationID = 0; if (solutionName == lpGlobalConfig::instance()->m_StationSolution_1) { - if (lpGlobalConfig::instance()->m_StationXYTrans_1 == true) { - centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1; - centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1; + if (lpGlobalConfig::instance()->bUse4PointStand == false)//使用的是两点标定方案 + { + if (lpGlobalConfig::instance()->m_StationXYTrans_1 == true) { + centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1; + centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1; + } + else { + centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1; + centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1; + } } - else { - centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationXOffset_1; - centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_1 + lpGlobalConfig::instance()->m_StationYOffset_1; + else {//使用的是四点标定方案 + QPointF tmpCenter = transWorldPoint(centerPoint, lpGlobalConfig::instance()->stationParam1.matix); + if (lpGlobalConfig::instance()->stationParam1.bXYTrans == false) + { + centerX = tmpCenter.x() + lpGlobalConfig::instance()->stationParam1.xPointOffset; + centerY = tmpCenter.y() + lpGlobalConfig::instance()->stationParam1.yPointOffset; + } + else { + centerY = tmpCenter.x() + lpGlobalConfig::instance()->stationParam1.xPointOffset; + centerX = tmpCenter.y() + lpGlobalConfig::instance()->stationParam1.yPointOffset; + } } sendResult(1, dAngle, centerX, centerY); @@ -1457,13 +1494,29 @@ void CMainWin::IEngineResult(QVariantMap vMap) } else if (solutionName == lpGlobalConfig::instance()->m_StationSolution_2) { - if (lpGlobalConfig::instance()->m_StationXYTrans_2 == true) { - centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2; - centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2; + if (lpGlobalConfig::instance()->bUse4PointStand == false)//使用的是两点标定方案 + { + if (lpGlobalConfig::instance()->m_StationXYTrans_2 == true) { + centerY = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2; + centerX = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2; + } + else { + centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2; + centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2; + } } - else { - centerX = centerPoint.x() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationXOffset_2; - centerY = centerPoint.y() * lpGlobalConfig::instance()->m_StationScale_2 + lpGlobalConfig::instance()->m_StationYOffset_2; + else//使用的是四点标定方案 + { + QPointF tmpCenter = transWorldPoint(centerPoint, lpGlobalConfig::instance()->stationParam2.matix); + if (lpGlobalConfig::instance()->stationParam2.bXYTrans == false) + { + centerX = tmpCenter.x() + lpGlobalConfig::instance()->stationParam2.xPointOffset; + centerY = tmpCenter.y() + lpGlobalConfig::instance()->stationParam2.yPointOffset; + } + else { + centerY = tmpCenter.x() + lpGlobalConfig::instance()->stationParam2.xPointOffset; + centerX = tmpCenter.y() + lpGlobalConfig::instance()->stationParam2.yPointOffset; + } } sendResult(2, dAngle, centerX, centerY); diff --git a/tpvs17/lpMain/CMainWin.h b/tpvs17/lpMain/CMainWin.h index 6afd257..523474d 100644 --- a/tpvs17/lpMain/CMainWin.h +++ b/tpvs17/lpMain/CMainWin.h @@ -24,6 +24,7 @@ #include "lpImageCaliUI.h" #include "QDiskCleanThread.h" #include "RoiImgViewer.h" +#include "lpImageCaliUI4P.h" struct StationInfo { @@ -162,6 +163,7 @@ private: QCryptokeyUI *m_pCheckLineseUI{ nullptr }; lpImageCaliUI* m_pImageCaliUI{ nullptr }; + lpImageCaliUI4P* m_pImageCaliUI4P{ nullptr }; QList m_pDCThreadList; diff --git a/tpvs17/lpMain/QAboutUI.ui b/tpvs17/lpMain/QAboutUI.ui index 4c050b0..a2ebe49 100644 --- a/tpvs17/lpMain/QAboutUI.ui +++ b/tpvs17/lpMain/QAboutUI.ui @@ -22,7 +22,7 @@ - <html><head/><body><p>Main Version: 1.6.1028</p><p>Tadpole Version: 3.0.00</p><p>Final update date:20211028 15:00:00</p><p>Final Test data:20211028 15:00:00</p><p>单工位汽轮定位型号判别</p><p>CopyRight (C) 2016-2025 HangZhou Leaper </p><p>摩汽配件产品部</p><p><br/></p></body></html> + <html><head/><body><p>Main Version: 1.6.1103</p><p>Tadpole Version: 3.0.00</p><p>Final update date:20211103 15:00:00</p><p>Final Test data:20211103 15:00:00</p><p>单工位汽轮定位型号判别</p><p>CopyRight (C) 2016-2025 HangZhou Leaper </p><p>摩汽配件产品部</p><p><br/></p></body></html> diff --git a/tpvs17/lpMain/QDeviceMgrUI.cpp b/tpvs17/lpMain/QDeviceMgrUI.cpp index 97146f7..016e6b2 100644 --- a/tpvs17/lpMain/QDeviceMgrUI.cpp +++ b/tpvs17/lpMain/QDeviceMgrUI.cpp @@ -55,7 +55,7 @@ void QDeviceMgrUI::setParam() ui.spinBox_2->setValue(lpSysConfig::instance()->m_CheckFileDays); ui.comboBox->setCurrentText(lpSysConfig::instance()->m_CurLanguage); ui.lineEdit->setText(QString("%1").arg(lpGlobalConfig::instance()->trigerFilter)); - + ui.checkBox->setChecked(lpGlobalConfig::instance()->bUse4PointStand); } void QDeviceMgrUI::getParam() @@ -74,7 +74,7 @@ void QDeviceMgrUI::getParam() QString curText = ui.comboBox->currentText(); emit sgChangeLanguage(curText); - + lpGlobalConfig::instance()->bUse4PointStand = ui.checkBox->isChecked(); lpGlobalConfig::instance()->trigerFilter = ui.lineEdit->text().toInt(); lpGlobalConfig::instance()->writeConfig(); } diff --git a/tpvs17/lpMain/QDeviceMgrUI.ui b/tpvs17/lpMain/QDeviceMgrUI.ui index 93a65bc..5f793c8 100644 --- a/tpvs17/lpMain/QDeviceMgrUI.ui +++ b/tpvs17/lpMain/QDeviceMgrUI.ui @@ -6,8 +6,8 @@ 0 0 - 531 - 361 + 536 + 383 @@ -200,50 +200,6 @@ 系统设置 - - - - - 100 - 30 - - - - - 11 - - - - 应用 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -329,6 +285,107 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 30 + + + + + 11 + + + + 应用 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 图像保存: + + + + + + + 12 + + + + 保存工位2结果图 + + + + + + + + 12 + + + + 保存工位1结果图 + + + + + + + + 12 + + + + 保存工位1原图 + + + + + + + + 12 + + + + 保存工位2原图 + + + + + + @@ -475,57 +532,29 @@ - - + + - 图像保存: + 视场标定方案: - - - - - - 12 - - - - 保存工位2结果图 - - - + - - - - 12 - - + - 保存工位1结果图 + 方案选择: - - - - 12 - - - - 保存工位1原图 - - - - - - - - 12 - + + + + 0 + 0 + - 保存工位2原图 + 使用4点标定法(不勾选时默认为2点标定方案) diff --git a/tpvs17/lpMain/lpGlobalConfig.cpp b/tpvs17/lpMain/lpGlobalConfig.cpp index 116c9e6..b0dcefd 100644 --- a/tpvs17/lpMain/lpGlobalConfig.cpp +++ b/tpvs17/lpMain/lpGlobalConfig.cpp @@ -4,7 +4,8 @@ #include #include #include - +#include +using namespace cv; lpGlobalConfig::lpGlobalConfig(QObject *parent) : QObject(parent) { @@ -72,6 +73,61 @@ void lpGlobalConfig::readConfig() pointCircle = rootObj.value("pointCircle").toInt(20); trigerFilter = rootObj.value("trigerFilter").toInt(1000); + //new + bUse4PointStand = rootObj.value("use4pointstand").toBool(false); + + QJsonObject stand1Obj = rootObj.value("station1_4p").toObject(); + if (!stand1Obj.isEmpty()) + { + stationParam1.bXYTrans = stand1Obj.value("bXYTrans").toBool(false); + stationParam1.Pixpoint1 = QPoint(stand1Obj.value("pixpoint1_x").toInt(), stand1Obj.value("pixpoint1_y").toInt()); + stationParam1.Pixpoint2 = QPoint(stand1Obj.value("pixpoint2_x").toInt(), stand1Obj.value("pixpoint2_y").toInt()); + stationParam1.Pixpoint3 = QPoint(stand1Obj.value("pixpoint3_x").toInt(), stand1Obj.value("pixpoint3_y").toInt()); + stationParam1.Pixpoint4 = QPoint(stand1Obj.value("pixpoint4_x").toInt(), stand1Obj.value("pixpoint4_y").toInt()); + + stationParam1.Realpoint1 = QPointF(stand1Obj.value("Realpoint1_x").toDouble(), stand1Obj.value("Realpoint1_y").toDouble()); + stationParam1.Realpoint2 = QPointF(stand1Obj.value("Realpoint2_x").toDouble(), stand1Obj.value("Realpoint2_y").toDouble()); + stationParam1.Realpoint3 = QPointF(stand1Obj.value("Realpoint3_x").toDouble(), stand1Obj.value("Realpoint3_y").toDouble()); + stationParam1.Realpoint4 = QPointF(stand1Obj.value("Realpoint4_x").toDouble(), stand1Obj.value("Realpoint4_y").toDouble()); + + stationParam1.testPoint = QPoint(stand1Obj.value("testPoint_x").toInt(), stand1Obj.value("testPoint_y").toInt()); + + stationParam1.xPointOffset = stand1Obj.value("xoffset").toDouble(); + stationParam1.yPointOffset = stand1Obj.value("yoffset").toDouble(); + + stationParam1.matix.m11 = stand1Obj.value("m11").toDouble(); + stationParam1.matix.m12 = stand1Obj.value("m12").toDouble(); + stationParam1.matix.m21 = stand1Obj.value("m21").toDouble(); + stationParam1.matix.m22 = stand1Obj.value("m22").toDouble(); + stationParam1.matix.dx = stand1Obj.value("dx").toDouble(); + stationParam1.matix.dy = stand1Obj.value("dy").toDouble(); + } + QJsonObject stand2Obj = rootObj.value("station2_4p").toObject(); + if (!stand2Obj.isEmpty()) + { + stationParam2.bXYTrans = stand2Obj.value("bXYTrans").toBool(false); + stationParam2.Pixpoint1 = QPoint(stand2Obj.value("pixpoint1_x").toInt(), stand2Obj.value("pixpoint1_y").toInt()); + stationParam2.Pixpoint2 = QPoint(stand2Obj.value("pixpoint2_x").toInt(), stand2Obj.value("pixpoint2_y").toInt()); + stationParam2.Pixpoint3 = QPoint(stand2Obj.value("pixpoint3_x").toInt(), stand2Obj.value("pixpoint3_y").toInt()); + stationParam2.Pixpoint4 = QPoint(stand2Obj.value("pixpoint4_x").toInt(), stand2Obj.value("pixpoint4_y").toInt()); + + stationParam2.Realpoint1 = QPointF(stand2Obj.value("Realpoint1_x").toDouble(), stand2Obj.value("Realpoint1_y").toDouble()); + stationParam2.Realpoint2 = QPointF(stand2Obj.value("Realpoint2_x").toDouble(), stand2Obj.value("Realpoint2_y").toDouble()); + stationParam2.Realpoint3 = QPointF(stand2Obj.value("Realpoint3_x").toDouble(), stand2Obj.value("Realpoint3_y").toDouble()); + stationParam2.Realpoint4 = QPointF(stand2Obj.value("Realpoint4_x").toDouble(), stand2Obj.value("Realpoint4_y").toDouble()); + + stationParam2.testPoint = QPoint(stand2Obj.value("testPoint_x").toInt(), stand2Obj.value("testPoint_y").toInt()); + + stationParam2.xPointOffset = stand2Obj.value("xoffset").toDouble(); + stationParam2.yPointOffset = stand2Obj.value("yoffset").toDouble(); + + stationParam2.matix.m11 = stand2Obj.value("m11").toDouble(); + stationParam2.matix.m12 = stand2Obj.value("m12").toDouble(); + stationParam2.matix.m21 = stand2Obj.value("m21").toDouble(); + stationParam2.matix.m22 = stand2Obj.value("m22").toDouble(); + stationParam2.matix.dx = stand2Obj.value("dx").toDouble(); + stationParam2.matix.dy = stand2Obj.value("dy").toDouble(); + } } } file.close(); @@ -118,9 +174,138 @@ void lpGlobalConfig::writeConfig() rootObj.insert("pointCircle", pointCircle); rootObj.insert("trigerFilter", trigerFilter); + rootObj.insert("use4pointstand", bUse4PointStand); + + + QJsonObject stand1Obj; + stand1Obj.insert("bXYTrans", stationParam1.bXYTrans); + stand1Obj.insert("pixpoint1_x", stationParam1.Pixpoint1.x()); + stand1Obj.insert("pixpoint1_y", stationParam1.Pixpoint1.y()); + stand1Obj.insert("pixpoint2_x", stationParam1.Pixpoint2.x()); + stand1Obj.insert("pixpoint2_y", stationParam1.Pixpoint2.y()); + stand1Obj.insert("pixpoint3_x", stationParam1.Pixpoint3.x()); + stand1Obj.insert("pixpoint3_y", stationParam1.Pixpoint3.y()); + stand1Obj.insert("pixpoint4_x", stationParam1.Pixpoint4.x()); + stand1Obj.insert("pixpoint4_y", stationParam1.Pixpoint4.y()); + + stand1Obj.insert("Realpoint1_x", stationParam1.Realpoint1.x()); + stand1Obj.insert("Realpoint1_y", stationParam1.Realpoint1.y()); + stand1Obj.insert("Realpoint2_x", stationParam1.Realpoint2.x()); + stand1Obj.insert("Realpoint2_y", stationParam1.Realpoint2.y()); + stand1Obj.insert("Realpoint3_x", stationParam1.Realpoint3.x()); + stand1Obj.insert("Realpoint3_y", stationParam1.Realpoint3.y()); + stand1Obj.insert("Realpoint4_x", stationParam1.Realpoint4.x()); + stand1Obj.insert("Realpoint4_y", stationParam1.Realpoint4.y()); + + stand1Obj.insert("testPoint_x",stationParam1.testPoint.x()); + stand1Obj.insert("testPoint_y", stationParam1.testPoint.y()); + + stand1Obj.insert("xoffset",stationParam1.xPointOffset); + stand1Obj.insert("yoffset",stationParam1.yPointOffset); + + stand1Obj.insert("m11",stationParam1.matix.m11); + stand1Obj.insert("m12",stationParam1.matix.m12); + stand1Obj.insert("m21",stationParam1.matix.m21); + stand1Obj.insert("m22",stationParam1.matix.m22); + stand1Obj.insert("dx",stationParam1.matix.dx); + stand1Obj.insert("dy",stationParam1.matix.dy); + + rootObj.insert("station1_4p",stand1Obj); + + QJsonObject stand2Obj; + stand2Obj.insert("bXYTrans", stationParam2.bXYTrans); + stand2Obj.insert("pixpoint1_x", stationParam2.Pixpoint1.x()); + stand2Obj.insert("pixpoint1_y", stationParam2.Pixpoint1.y()); + stand2Obj.insert("pixpoint2_x", stationParam2.Pixpoint2.x()); + stand2Obj.insert("pixpoint2_y", stationParam2.Pixpoint2.y()); + stand2Obj.insert("pixpoint3_x", stationParam2.Pixpoint3.x()); + stand2Obj.insert("pixpoint3_y", stationParam2.Pixpoint3.y()); + stand2Obj.insert("pixpoint4_x", stationParam2.Pixpoint4.x()); + stand2Obj.insert("pixpoint4_y", stationParam2.Pixpoint4.y()); + + stand2Obj.insert("Realpoint1_x", stationParam2.Realpoint1.x()); + stand2Obj.insert("Realpoint1_y", stationParam2.Realpoint1.y()); + stand2Obj.insert("Realpoint2_x", stationParam2.Realpoint2.x()); + stand2Obj.insert("Realpoint2_y", stationParam2.Realpoint2.y()); + stand2Obj.insert("Realpoint3_x", stationParam2.Realpoint3.x()); + stand2Obj.insert("Realpoint3_y", stationParam2.Realpoint3.y()); + stand2Obj.insert("Realpoint4_x", stationParam2.Realpoint4.x()); + stand2Obj.insert("Realpoint4_y", stationParam2.Realpoint4.y()); + + stand2Obj.insert("testPoint_x", stationParam2.testPoint.x()); + stand2Obj.insert("testPoint_y", stationParam2.testPoint.y()); + + stand2Obj.insert("xoffset", stationParam2.xPointOffset); + stand2Obj.insert("yoffset", stationParam2.yPointOffset); + + stand2Obj.insert("m11", stationParam2.matix.m11); + stand2Obj.insert("m12", stationParam2.matix.m12); + stand2Obj.insert("m21", stationParam2.matix.m21); + stand2Obj.insert("m22", stationParam2.matix.m22); + stand2Obj.insert("dx", stationParam2.matix.dx); + stand2Obj.insert("dy", stationParam2.matix.dy); + + rootObj.insert("station2_4p", stand2Obj); + QJsonDocument doc(rootObj); QByteArray writeData = doc.toJson(); file.write(writeData); } file.close(); } + +QPointF transWorldPoint(QPointF imgPoint, MatixParam param) +{ + double temX = imgPoint.x() * param.m11 + imgPoint.y() * param.m21 + param.dx; + double temY = imgPoint.x() * param.m12 + imgPoint.y() * param.m22 + param.dy; + return QPointF(temX, temY); +} + +MatixParam gentransform(QPolygonF srcPos, QPolygonF dstPos) +{ + Point2f srcVec[4]; + Point2f dstTri[4]; + + srcVec[0].x = srcPos.at(0).x(); + srcVec[0].y = srcPos.at(0).y(); + + srcVec[1].x = srcPos.at(1).x(); + srcVec[1].y = srcPos.at(1).y(); + + srcVec[2].x = srcPos.at(2).x(); + srcVec[2].y = srcPos.at(2).y(); + + srcVec[3].x = srcPos.at(3).x(); + srcVec[3].y = srcPos.at(3).y(); + + dstTri[0].x = dstPos.at(0).x(); + dstTri[0].y = dstPos.at(0).y(); + + dstTri[1].x = dstPos.at(1).x(); + dstTri[1].y = dstPos.at(1).y(); + + dstTri[2].x = dstPos.at(2).x(); + dstTri[2].y = dstPos.at(2).y(); + + dstTri[3].x = dstPos.at(3).x(); + dstTri[3].y = dstPos.at(3).y(); + + /// ÷任 + Mat warp_mat = getAffineTransform(srcVec, dstTri); + double* pTransMat = (double*)(warp_mat.data); + double m00 = pTransMat[0]; + double m10 = pTransMat[1]; + double m20 = pTransMat[2]; + double m01 = pTransMat[3]; + double m11 = pTransMat[4]; + double m21 = pTransMat[5]; + + MatixParam param; + param.m11 = m00; + param.m21 = m10; + param.dx = m20; + param.m12 = m01; + param.m22 = m11; + param.dy = m21; + return param; +} diff --git a/tpvs17/lpMain/lpGlobalConfig.h b/tpvs17/lpMain/lpGlobalConfig.h index c448749..3db136a 100644 --- a/tpvs17/lpMain/lpGlobalConfig.h +++ b/tpvs17/lpMain/lpGlobalConfig.h @@ -5,6 +5,39 @@ #include "lp_singleton_base.h" #include #include +#include +#include + +struct MatixParam +{ + double m11{ 1 }; + double m21{ 0 }; + double dx{ 0 }; + double m12{ 0 }; + double m22{ 1 }; + double dy{ 0 }; +}; +struct StationStandard { + MatixParam matix; + QPoint Pixpoint1{ 100,100 }; + QPoint Pixpoint2{ 200,100 }; + QPoint Pixpoint3{ 200,200 }; + QPoint Pixpoint4{ 100,200 }; + + QPointF Realpoint1{ 100,100 }; + QPointF Realpoint2{ 200,100 }; + QPointF Realpoint3{ 200,200 }; + QPointF Realpoint4{ 100,200 }; + + QPoint testPoint{ 300,300 }; + bool bXYTrans{ false }; + double xPointOffset{0}; + double yPointOffset{0}; +}; + +QPointF transWorldPoint(QPointF imgPoint, MatixParam param); +MatixParam gentransform(QPolygonF srcPos, QPolygonF dstPos); + class lpGlobalConfig : public QObject, public lp_singleton_base { @@ -50,6 +83,9 @@ public: QString m_rootPath; int trigerFilter{ 1000 };//˲ʱ + bool bUse4PointStand{ false }; + StationStandard stationParam1; + StationStandard stationParam2; }; #endif diff --git a/tpvs17/lpMain/lpImageCaliUI4P.cpp b/tpvs17/lpMain/lpImageCaliUI4P.cpp new file mode 100644 index 0000000..4951714 --- /dev/null +++ b/tpvs17/lpMain/lpImageCaliUI4P.cpp @@ -0,0 +1,623 @@ +#include "lpImageCaliUI4P.h" +#include "QFileDialog" +#include "lpGlobalConfig.h" +#include +#include +#pragma execution_character_set("utf-8") +lpImageCaliUI4P::lpImageCaliUI4P(QWidget *parent) + : QWidget(parent) +{ + ui.setupUi(this); + { + m_srcImgView_1 = replaceWidget(ui.widget); + connect(m_srcImgView_1, SIGNAL(filterroiChanged(const AwesomeRoiInfo&, QString)), this, SLOT(onROIChange(const AwesomeRoiInfo&, QString))); + connect(m_srcImgView_1, SIGNAL(pixelClicked(QPoint)), this, SLOT(onPixelClicked(QPoint))); + connect(m_srcImgView_1, SIGNAL(roiLockIng(QString)), this, SLOT(onRoiLockIng(QString))); + connect(m_srcImgView_1, SIGNAL(sgImageScale(qreal)), this, SLOT(onImageScale(qreal))); + + connect(ui.m_pbLoadImg, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + connect(ui.m_pbApply, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + //connect(ui.m_pbExit, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + connect(ui.m_pbLock, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + } + { + m_srcImgView_2 = replaceWidget(ui.widget_2); + connect(m_srcImgView_2, SIGNAL(filterroiChanged(const AwesomeRoiInfo&, QString)), this, SLOT(onROIChange(const AwesomeRoiInfo&, QString))); + connect(m_srcImgView_2, SIGNAL(pixelClicked(QPoint)), this, SLOT(onPixelClicked(QPoint))); + connect(m_srcImgView_2, SIGNAL(roiLockIng(QString)), this, SLOT(onRoiLockIng(QString))); + connect(m_srcImgView_2, SIGNAL(sgImageScale(qreal)), this, SLOT(onImageScale(qreal))); + + connect(ui.m_pbLoadImg_2, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + connect(ui.m_pbApply_2, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + //connect(ui.m_pbExit, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + connect(ui.m_pbLock_2, SIGNAL(clicked()), this, SLOT(onButtonClicked())); + } + + QString strPath = QApplication::applicationDirPath() + "/showImg.ini";//ͼչʾIJ + QSettings setting(strPath, QSettings::IniFormat); + double nScale_1 = setting.value("ShowImg/Scale_Standard_1", 0.53).toDouble(); + m_srcImgView_1->setInitScale(nScale_1); + double nScale_2 = setting.value("ShowImg/Scale_Standard_2", 0.53).toDouble(); + m_srcImgView_2->setInitScale(nScale_2); +} + +lpImageCaliUI4P::~lpImageCaliUI4P() +{ + if (m_srcImgView_1) { + delete m_srcImgView_1; + m_srcImgView_1 = nullptr; + } + if (m_srcImgView_2) { + delete m_srcImgView_2; + m_srcImgView_2 = nullptr; + } +} + +template +_Widget* lpImageCaliUI4P::replaceWidget(QWidget* pSrcWidget) +{ + if (!pSrcWidget) { + return nullptr; + } + QWidget* pParent = qobject_cast(pSrcWidget->parent()); + if (!pParent) { + return nullptr; + } + _Widget* pDstWidget = new _Widget; + auto *pFrom = pParent->layout()->replaceWidget(pSrcWidget, pDstWidget); + delete pFrom; + delete pSrcWidget; + return pDstWidget; +} + +void lpImageCaliUI4P::setStationFlags(bool bDouble) +{ + if (bDouble == false) + { + ui.tabWidget->removeTab(1); + } +} + +void lpImageCaliUI4P::showEvent(QShowEvent *event) +{ + {//λ1 + ui.m_lineEdit_P1X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint1.x())); + ui.m_lineEdit_P1Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint1.y())); + ui.m_lineEdit_P2X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint2.x())); + ui.m_lineEdit_P2Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint2.y())); + ui.m_lineEdit_P3X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint3.x())); + ui.m_lineEdit_P3Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint3.y())); + ui.m_lineEdit_P4X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint4.x())); + ui.m_lineEdit_P4Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Pixpoint4.y())); + + ui.m_lineEdit_RealP1X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint1.x())); + ui.m_lineEdit_RealP1Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint1.y())); + ui.m_lineEdit_RealP2X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint2.x())); + ui.m_lineEdit_RealP2Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint2.y())); + ui.m_lineEdit_RealP3X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint3.x())); + ui.m_lineEdit_RealP3Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint3.y())); + ui.m_lineEdit_RealP4X->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint4.x())); + ui.m_lineEdit_RealP4Y->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.Realpoint4.y())); + + ui.m_lineEdit_Xoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.xPointOffset)); + ui.m_lineEdit_Yoffset->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam1.yPointOffset)); + + ui.checkBox_XY_1->setChecked(lpGlobalConfig::instance()->stationParam1.bXYTrans);//ȡ + m_point1_1 = lpGlobalConfig::instance()->stationParam1.Pixpoint1; + m_point2_1 = lpGlobalConfig::instance()->stationParam1.Pixpoint2; + m_point3_1 = lpGlobalConfig::instance()->stationParam1.Pixpoint3; + m_point4_1 = lpGlobalConfig::instance()->stationParam1.Pixpoint4; + m_testPoint_1 = lpGlobalConfig::instance()->stationParam1.testPoint; + + QPointF temPoint = transWorldPoint(m_testPoint_1, lpGlobalConfig::instance()->stationParam1.matix); + ui.label_testPixPoint->setText(QString("(%1%2)").arg(m_testPoint_1.x()).arg(m_testPoint_1.y())); + ui.label_testRealPoint->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + if (m_srcImgView_1) + { + m_srcImgView_1->onClearAllROI(); + QString DstPath = QApplication::applicationDirPath() + "\\user\\StandImage_1.jpg"; + QImage img; + img.load(DstPath); + + m_imageH_1 = img.height(); + m_imageW_1 = img.width(); + m_srcImgView_1->setImg(img); + + AddPoint(m_point1_1, "P1"); + AddPoint(m_point2_1, "P2"); + AddPoint(m_point3_1, "P3"); + AddPoint(m_point4_1, "P4"); + AddPoint(m_testPoint_1, "Test",QColor(255,250,0)); + m_srcImgView_1->setLabelVisible(true); + m_srcImgView_1->setLockAll(true); + } + ui.m_pbLock->setText(tr("")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); + } + { + ui.m_lineEdit_P1X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint1.x())); + ui.m_lineEdit_P1Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint1.y())); + ui.m_lineEdit_P2X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint2.x())); + ui.m_lineEdit_P2Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint2.y())); + ui.m_lineEdit_P3X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint3.x())); + ui.m_lineEdit_P3Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint3.y())); + ui.m_lineEdit_P4X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint4.x())); + ui.m_lineEdit_P4Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Pixpoint4.y())); + + ui.m_lineEdit_RealP1X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint1.x())); + ui.m_lineEdit_RealP1Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint1.y())); + ui.m_lineEdit_RealP2X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint2.x())); + ui.m_lineEdit_RealP2Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint2.y())); + ui.m_lineEdit_RealP3X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint3.x())); + ui.m_lineEdit_RealP3Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint3.y())); + ui.m_lineEdit_RealP4X_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint4.x())); + ui.m_lineEdit_RealP4Y_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.Realpoint4.y())); + + ui.m_lineEdit_Xoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.xPointOffset)); + ui.m_lineEdit_Yoffset_2->setText(QString("%1").arg(lpGlobalConfig::instance()->stationParam2.yPointOffset)); + + ui.checkBox_XY_2->setChecked(lpGlobalConfig::instance()->stationParam2.bXYTrans);//ȡ + m_point1_2 = lpGlobalConfig::instance()->stationParam2.Pixpoint1; + m_point2_2 = lpGlobalConfig::instance()->stationParam2.Pixpoint2; + m_point3_2 = lpGlobalConfig::instance()->stationParam2.Pixpoint3; + m_point4_2 = lpGlobalConfig::instance()->stationParam2.Pixpoint4; + m_testPoint_2 = lpGlobalConfig::instance()->stationParam2.testPoint; + + QPointF temPoint = transWorldPoint(m_testPoint_2, lpGlobalConfig::instance()->stationParam2.matix); + ui.label_testPixPoint_2->setText(QString("(%1%2)").arg(m_testPoint_2.x()).arg(m_testPoint_2.y())); + ui.label_testRealPoint_2->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + if (m_srcImgView_2) + { + m_srcImgView_2->onClearAllROI(); + QString DstPath = QApplication::applicationDirPath() + "\\user\\StandImage_2.jpg"; + QImage img; + img.load(DstPath); + + m_imageH_2 = img.height(); + m_imageW_2 = img.width(); + m_srcImgView_2->setImg(img); + + AddPoint_2(m_point1_2, "P1"); + AddPoint_2(m_point2_2, "P2"); + AddPoint_2(m_point3_2, "P3"); + AddPoint_2(m_point4_2, "P4"); + AddPoint_2(m_testPoint_2, "Test", QColor(255, 250, 0)); + m_srcImgView_2->setLabelVisible(true); + m_srcImgView_2->setLockAll(true); + } + ui.m_pbLock_2->setText(tr("")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); + } +} + +void lpImageCaliUI4P::changeEvent(QEvent *event) +{ + if (event->type() == QEvent::LanguageChange) + { + ui.retranslateUi(this); + } +} + +Q_SLOT void lpImageCaliUI4P::onButtonClicked() +{ + QString strObj = sender()->objectName(); + if (strObj == "m_pbLoadImg") + { + QString fileName = QFileDialog::getOpenFileName(this, tr("ѡ궨ͼ"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)")); + if (!fileName.isEmpty()) + { + QString DstPath = QApplication::applicationDirPath() + "\\user\\StandImage_1.jpg"; + QString sourcePath = fileName; + DstPath.replace("\\", "/"); + if (sourcePath == DstPath) { + } + if (!QFile::exists(sourcePath)) { + } + QDir *createfile = new QDir; + bool exist = createfile->exists(DstPath); + if (exist) { + createfile->remove(DstPath); + } + QImage img; + img.load(fileName); + img.save(DstPath); + if (m_srcImgView_1) { + m_imageH_1 = img.height(); + m_imageW_1 = img.width(); + m_srcImgView_1->setImg(img); + m_srcImgView_1->onClearAllROI(); + AddPoint(m_point1_1, "P1"); + AddPoint(m_point2_1, "P2"); + AddPoint(m_point3_1, "P3"); + AddPoint(m_point4_1, "P4"); + AddPoint(m_testPoint_1, "Test", QColor(255, 250, 0)); + m_srcImgView_1->setLabelVisible(true); + m_srcImgView_1->setLockAll(true); + ui.m_pbLock->setText(tr("")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); + } + delete createfile; + createfile = nullptr; + } + } + if (strObj == "m_pbLoadImg_2") + { + QString fileName = QFileDialog::getOpenFileName(this, tr("ѡ궨ͼ"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)")); + if (!fileName.isEmpty()) + { + QString DstPath = QApplication::applicationDirPath() + "\\user\\StandImage_2.jpg"; + QString sourcePath = fileName; + DstPath.replace("\\", "/"); + if (sourcePath == DstPath) { + } + if (!QFile::exists(sourcePath)) { + } + QDir *createfile = new QDir; + bool exist = createfile->exists(DstPath); + if (exist) { + createfile->remove(DstPath); + } + QImage img; + img.load(fileName); + img.save(DstPath); + if (m_srcImgView_2) { + m_imageH_2 = img.height(); + m_imageW_2 = img.width(); + m_srcImgView_2->setImg(img); + m_srcImgView_2->onClearAllROI(); + AddPoint_2(m_point1_2, "P1"); + AddPoint_2(m_point2_2, "P2"); + AddPoint_2(m_point3_2, "P3"); + AddPoint_2(m_point4_2, "P4"); + AddPoint_2(m_testPoint_2, "Test", QColor(255, 250, 0)); + m_srcImgView_2->setLabelVisible(true); + m_srcImgView_2->setLockAll(true); + ui.m_pbLock_2->setText(tr("")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); + } + delete createfile; + createfile = nullptr; + } + } + else if ("m_pbApply" == strObj) + { + double realx1 = ui.m_lineEdit_RealP1X->text().toDouble(); + double realy1 = ui.m_lineEdit_RealP1Y->text().toDouble(); + double realx2 = ui.m_lineEdit_RealP2X->text().toDouble(); + double realy2 = ui.m_lineEdit_RealP2Y->text().toDouble(); + double realx3 = ui.m_lineEdit_RealP3X->text().toDouble(); + double realy3 = ui.m_lineEdit_RealP3Y->text().toDouble(); + double realx4 = ui.m_lineEdit_RealP4X->text().toDouble(); + double realy4 = ui.m_lineEdit_RealP4Y->text().toDouble(); + + QPointF realPoint1 = QPointF(realx1, realy1); + QPointF realPoint2 = QPointF(realx2, realy2); + QPointF realPoint3 = QPointF(realx3, realy3); + QPointF realPoint4 = QPointF(realx4, realy4); + + lpGlobalConfig::instance()->stationParam1.Realpoint1 = realPoint1; + lpGlobalConfig::instance()->stationParam1.Realpoint2 = realPoint2; + lpGlobalConfig::instance()->stationParam1.Realpoint3 = realPoint3; + lpGlobalConfig::instance()->stationParam1.Realpoint4 = realPoint4; + + lpGlobalConfig::instance()->stationParam1.testPoint = m_testPoint_1; + QPolygonF srcPoly; + QPolygonF dstPoly; + srcPoly << m_point1_1 << m_point2_1 << m_point3_1 << m_point4_1; + dstPoly << realPoint1 << realPoint2 << realPoint3 << realPoint4; + lpGlobalConfig::instance()->stationParam1.matix = gentransform(srcPoly, dstPoly); + + QPointF temPoint = transWorldPoint(m_testPoint_1, lpGlobalConfig::instance()->stationParam1.matix); + ui.label_testPixPoint->setText(QString("(%1%2)").arg(m_testPoint_1.x()).arg(m_testPoint_1.y())); + ui.label_testRealPoint->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + + lpGlobalConfig::instance()->stationParam1.bXYTrans = ui.checkBox_XY_1->isChecked();//ȡ + lpGlobalConfig::instance()->stationParam1.xPointOffset = ui.m_lineEdit_Xoffset->text().toDouble(); + lpGlobalConfig::instance()->stationParam1.yPointOffset = ui.m_lineEdit_Yoffset->text().toDouble(); + lpGlobalConfig::instance()->stationParam1.Pixpoint1 = m_point1_1; + lpGlobalConfig::instance()->stationParam1.Pixpoint2 = m_point2_1; + lpGlobalConfig::instance()->stationParam1.Pixpoint3 = m_point3_1; + lpGlobalConfig::instance()->stationParam1.Pixpoint4 = m_point4_1; + lpGlobalConfig::instance()->writeConfig(); + ui.label_info->setText("Ч"); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + else if ("m_pbApply_2" == strObj) + { + double realx1 = ui.m_lineEdit_RealP1X_2->text().toDouble(); + double realy1 = ui.m_lineEdit_RealP1Y_2->text().toDouble(); + double realx2 = ui.m_lineEdit_RealP2X_2->text().toDouble(); + double realy2 = ui.m_lineEdit_RealP2Y_2->text().toDouble(); + double realx3 = ui.m_lineEdit_RealP3X_2->text().toDouble(); + double realy3 = ui.m_lineEdit_RealP3Y_2->text().toDouble(); + double realx4 = ui.m_lineEdit_RealP4X_2->text().toDouble(); + double realy4 = ui.m_lineEdit_RealP4Y_2->text().toDouble(); + + QPointF realPoint1 = QPointF(realx1, realy1); + QPointF realPoint2 = QPointF(realx2, realy2); + QPointF realPoint3 = QPointF(realx3, realy3); + QPointF realPoint4 = QPointF(realx4, realy4); + + lpGlobalConfig::instance()->stationParam2.Realpoint1 = realPoint1; + lpGlobalConfig::instance()->stationParam2.Realpoint2 = realPoint2; + lpGlobalConfig::instance()->stationParam2.Realpoint3 = realPoint3; + lpGlobalConfig::instance()->stationParam2.Realpoint4 = realPoint4; + + lpGlobalConfig::instance()->stationParam2.testPoint = m_testPoint_2; + QPolygonF srcPoly; + QPolygonF dstPoly; + srcPoly << m_point1_2 << m_point2_2 << m_point3_2 << m_point4_2; + dstPoly << realPoint1 << realPoint2 << realPoint3 << realPoint4; + lpGlobalConfig::instance()->stationParam2.matix = gentransform(srcPoly, dstPoly); + + QPointF temPoint = transWorldPoint(m_testPoint_2, lpGlobalConfig::instance()->stationParam2.matix); + ui.label_testPixPoint_2->setText(QString("(%1%2)").arg(m_testPoint_2.x()).arg(m_testPoint_2.y())); + ui.label_testRealPoint_2->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + + lpGlobalConfig::instance()->stationParam2.bXYTrans = ui.checkBox_XY_2->isChecked();//ȡ + lpGlobalConfig::instance()->stationParam2.xPointOffset = ui.m_lineEdit_Xoffset_2->text().toDouble(); + lpGlobalConfig::instance()->stationParam2.yPointOffset = ui.m_lineEdit_Yoffset_2->text().toDouble(); + lpGlobalConfig::instance()->stationParam2.Pixpoint1 = m_point1_2; + lpGlobalConfig::instance()->stationParam2.Pixpoint2 = m_point2_2; + lpGlobalConfig::instance()->stationParam2.Pixpoint3 = m_point3_2; + lpGlobalConfig::instance()->stationParam2.Pixpoint4 = m_point4_2; + lpGlobalConfig::instance()->writeConfig(); + ui.label_info_2->setText("Ч"); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + else if ("m_pbExit" == strObj) + { + close(); + } + else if ("m_pbLock" == strObj) + { + QString str = ui.m_pbLock->text(); + if (str == tr("")) { + ui.m_pbLock->setText(tr("")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock-open.png")); + if (m_srcImgView_1) + { + m_srcImgView_1->setLockAll(false); + } + ui.label_info->setText("ѽ"); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + else { + if (m_srcImgView_1) + { + m_srcImgView_1->setLockAll(true); + } + ui.m_pbLock->setText(tr("")); + ui.m_pbLock->setIcon(QIcon(":/Resource/lock.png")); + ui.label_info->setText(""); + ui.label_info->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + } + else if ("m_pbLock_2" == strObj) + { + QString str = ui.m_pbLock_2->text(); + if (str == tr("")) { + ui.m_pbLock_2->setText(tr("")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock-open.png")); + if (m_srcImgView_2) + { + m_srcImgView_2->setLockAll(false); + } + ui.label_info_2->setText("ѽ"); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + else { + if (m_srcImgView_2) + { + m_srcImgView_2->setLockAll(true); + } + ui.m_pbLock_2->setText(tr("")); + ui.m_pbLock_2->setIcon(QIcon(":/Resource/lock.png")); + + ui.label_info_2->setText(""); + ui.label_info_2->setStyleSheet("background-color: rgb(255, 168, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + } +} + + +Q_SLOT void lpImageCaliUI4P::onROIChange(const AwesomeRoiInfo& roiInfo, QString strID) +{ + if (sender() == m_srcImgView_1) + { + if (strID == "P1") + { + QPointF p = roiInfo.vertex.at(0); + m_point1_1.setX(p.x()); + m_point1_1.setY(p.y()); + ui.m_lineEdit_P1X->setText(QString("%1").arg(m_point1_1.x())); + ui.m_lineEdit_P1Y->setText(QString("%1").arg(m_point1_1.y())); + + } + else if (strID == "P2") + { + QPointF p = roiInfo.vertex.at(0); + m_point2_1.setX(p.x()); + m_point2_1.setY(p.y()); + ui.m_lineEdit_P2X->setText(QString("%1").arg(m_point2_1.x())); + ui.m_lineEdit_P2Y->setText(QString("%1").arg(m_point2_1.y())); + } + else if (strID == "P3") + { + QPointF p = roiInfo.vertex.at(0); + m_point3_1.setX(p.x()); + m_point3_1.setY(p.y()); + ui.m_lineEdit_P3X->setText(QString("%1").arg(m_point3_1.x())); + ui.m_lineEdit_P3Y->setText(QString("%1").arg(m_point3_1.y())); + } + else if (strID == "P4") + { + QPointF p = roiInfo.vertex.at(0); + m_point4_1.setX(p.x()); + m_point4_1.setY(p.y()); + ui.m_lineEdit_P4X->setText(QString("%1").arg(m_point4_1.x())); + ui.m_lineEdit_P4Y->setText(QString("%1").arg(m_point4_1.y())); + } + else if (strID == "Test") + { + QPointF p = roiInfo.vertex.at(0); + m_testPoint_1.setX(p.x()); + m_testPoint_1.setY(p.y()); + QPointF temPoint = transWorldPoint(m_testPoint_1, lpGlobalConfig::instance()->stationParam1.matix); + ui.label_testPixPoint->setText(QString("(%1%2)").arg(m_testPoint_1.x()).arg(m_testPoint_1.y())); + ui.label_testRealPoint->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + } + } + else if (sender() == m_srcImgView_2) + { + if (strID == "P1") + { + QPointF p = roiInfo.vertex.at(0); + m_point1_2.setX(p.x()); + m_point1_2.setY(p.y()); + ui.m_lineEdit_P1X_2->setText(QString("%1").arg(m_point1_2.x())); + ui.m_lineEdit_P1Y_2->setText(QString("%1").arg(m_point1_2.y())); + + } + else if (strID == "P2") + { + QPointF p = roiInfo.vertex.at(0); + m_point2_2.setX(p.x()); + m_point2_2.setY(p.y()); + ui.m_lineEdit_P2X_2->setText(QString("%1").arg(m_point2_2.x())); + ui.m_lineEdit_P2Y_2->setText(QString("%1").arg(m_point2_2.y())); + } + else if (strID == "P3") + { + QPointF p = roiInfo.vertex.at(0); + m_point3_2.setX(p.x()); + m_point3_2.setY(p.y()); + ui.m_lineEdit_P3X_2->setText(QString("%1").arg(m_point3_2.x())); + ui.m_lineEdit_P3Y_2->setText(QString("%1").arg(m_point3_2.y())); + } + else if (strID == "P4") + { + QPointF p = roiInfo.vertex.at(0); + m_point4_2.setX(p.x()); + m_point4_2.setY(p.y()); + ui.m_lineEdit_P4X_2->setText(QString("%1").arg(m_point4_2.x())); + ui.m_lineEdit_P4Y_2->setText(QString("%1").arg(m_point4_2.y())); + } + else if (strID == "Test") + { + QPointF p = roiInfo.vertex.at(0); + m_testPoint_2.setX(p.x()); + m_testPoint_2.setY(p.y()); + QPointF temPoint = transWorldPoint(m_testPoint_2, lpGlobalConfig::instance()->stationParam2.matix); + ui.label_testPixPoint_2->setText(QString("(%1%2)").arg(m_testPoint_2.x()).arg(m_testPoint_2.y())); + ui.label_testRealPoint_2->setText(QString("(%1%2)").arg(temPoint.x()).arg(temPoint.y())); + } + } +} + +Q_SLOT void lpImageCaliUI4P::onPixelClicked(QPoint point) +{ + int a = 0; +} + +Q_SLOT void lpImageCaliUI4P::onImageScale(qreal value) +{ + if (sender() == m_srcImgView_1) + { + QString strPath = QApplication::applicationDirPath() + "/showImg.ini"; + QSettings setting(strPath, QSettings::IniFormat); + QObject *obj = sender(); + setting.setValue("ShowImg/Scale_Standard_1", value); + } + else if (sender() == m_srcImgView_2) + { + QString strPath = QApplication::applicationDirPath() + "/showImg.ini"; + QSettings setting(strPath, QSettings::IniFormat); + QObject *obj = sender(); + setting.setValue("ShowImg/Scale_Standard_2", value); + } +} + +void lpImageCaliUI4P::AddPoint(QPoint &p, QString strName,QColor color/* = QColor(0, 255, 0)*/) +{ + if (m_srcImgView_1) + { + int x = p.x(); + int y = p.y(); + int xp = (x - m_imageW_1 / 2); + int yp = (y - m_imageH_1 / 2); + m_srcImgView_1->addPointRoi(QPointF(xp, yp), lpGlobalConfig::instance()->pointCircle, 0, strName, color, QColor(255, 0, 255)); + } +} + +void lpImageCaliUI4P::AddPoint_2(QPoint &p, QString strName, QColor color) +{ + if (m_srcImgView_2) + { + int x = p.x(); + int y = p.y(); + int xp = (x - m_imageW_2 / 2); + int yp = (y - m_imageH_2 / 2); + m_srcImgView_2->addPointRoi(QPointF(xp, yp), lpGlobalConfig::instance()->pointCircle, 0, strName, color, QColor(255, 0, 255)); + } +} + +Q_SLOT void lpImageCaliUI4P::onRoiLockIng(QString strName) +{ + if (sender() == m_srcImgView_1) + { + ui.label_info->setText("ܲ,"); + ui.label_info->setStyleSheet("background-color: rgb(200, 68, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } + else if (sender() == m_srcImgView_2) + { + ui.label_info_2->setText("ܲ,"); + ui.label_info_2->setStyleSheet("background-color: rgb(200, 68, 55);"); + if (m_timerID == 0) + { + m_timerID = startTimer(1000); + } + } +} + +void lpImageCaliUI4P::timerEvent(QTimerEvent *event) +{ + if (m_timerID == event->timerId()) + { + killTimer(m_timerID); + m_timerID = 0; + ui.label_info->setText(""); + ui.label_info->setStyleSheet(""); + ui.label_info_2->setText(""); + ui.label_info_2->setStyleSheet(""); + } +} + diff --git a/tpvs17/lpMain/lpImageCaliUI4P.h b/tpvs17/lpMain/lpImageCaliUI4P.h new file mode 100644 index 0000000..fd7dc96 --- /dev/null +++ b/tpvs17/lpMain/lpImageCaliUI4P.h @@ -0,0 +1,59 @@ +#ifndef _LPIMAGECALIUI4P_H_ +#define _LPIMAGECALIUI4P_H_ + +#include +#include "ui_lpImageCaliUI4P.h" +#include "AwesomeImgViewer.h" +class lpImageCaliUI4P : public QWidget +{ + Q_OBJECT + +public: + lpImageCaliUI4P(QWidget *parent = Q_NULLPTR); + ~lpImageCaliUI4P(); + template + _Widget* replaceWidget(QWidget* pSrcWidget); + + void setStationFlags(bool bDouble); +protected: + void AddPoint(QPoint &p, QString strName, QColor color = QColor(0, 255, 0)); + void AddPoint_2(QPoint &p, QString strName, QColor color = QColor(0, 255, 0)); + Q_SLOT void onButtonClicked(); + Q_SLOT void onROIChange(const AwesomeRoiInfo& roiInfo, QString strID); + Q_SLOT void onPixelClicked(QPoint point); + Q_SLOT void onImageScale(qreal scale); + Q_SLOT void onRoiLockIng(QString strName); +protected: + virtual void showEvent(QShowEvent *event); + virtual void changeEvent(QEvent *event); + virtual void timerEvent(QTimerEvent *event); +private: + Ui::lpImageCaliUI4P ui; + + //1 + AwesomeImgViewer *m_srcImgView_1{ nullptr }; + int m_imageH_1{ 0 }; + int m_imageW_1{ 0 }; + + QPoint m_point1_1; + QPoint m_point2_1; + QPoint m_point3_1; + QPoint m_point4_1; + QPoint m_testPoint_1; + + //2 + AwesomeImgViewer *m_srcImgView_2{ nullptr }; + int m_imageH_2{ 0 }; + int m_imageW_2{ 0 }; + + QPoint m_point1_2; + QPoint m_point2_2; + QPoint m_point3_2; + QPoint m_point4_2; + QPoint m_testPoint_2; + // + int m_timerID{ 0 }; + +}; + +#endif diff --git a/tpvs17/lpMain/lpImageCaliUI4P.ui b/tpvs17/lpMain/lpImageCaliUI4P.ui new file mode 100644 index 0000000..3900058 --- /dev/null +++ b/tpvs17/lpMain/lpImageCaliUI4P.ui @@ -0,0 +1,1018 @@ + + + lpImageCaliUI4P + + + + 0 + 0 + 1009 + 680 + + + + lpImageCaliUI4P + + + + + + + 12 + + + + 0 + + + + 工位1相机视场标定 + + + + + + + 9 + 0 + + + + background-color: rgb(197, 197, 197); + + + + + + + + + + 0 + 0 + + + + + 12 + + + + + + + + + 12 + + + + + + + + + + + + + + + 3 + 0 + + + + + 12 + + + + 操作 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 12 + + + + 选择标定图像 + + + + :/Resource/img.png:/Resource/img.png + + + + + + + + + + + + + + + + + XY坐标输出: + + + + + + + 位置互换 + + + + + + + + + + + 物理X方向偏移: + + + + + + + + + + + + + + 物理Y方向偏移: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 解锁 + + + + :/Resource/lock-open.png:/Resource/lock-open.png + + + + + + + + + + 0 + 0 + + + + 图像四点坐标: + + + + + + P3_X: + + + + + + + + 70 + 0 + + + + 1200 + + + true + + + + + + + P1_Y: + + + + + + + + 70 + 0 + + + + 1200 + + + true + + + + + + + P2_X: + + + + + + + 1200 + + + true + + + + + + + P1_X: + + + + + + + P2_Y: + + + + + + + 1200 + + + true + + + + + + + P4_X: + + + + + + + P3_Y: + + + + + + + P4_Y: + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + + + + + 场景四点坐标: + + + + + + P3_X: + + + + + + + P4_Y: + + + + + + + P1_Y: + + + + + + + P2_Y: + + + + + + + P4_X: + + + + + + + P3_Y: + + + + + + + + + + P1_X: + + + + + + + P2_X: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 测试点: + + + + + + 场景坐标: + + + + + + + 像素坐标: + + + + + + + + 0 + 0 + + + + 1 + + + + + + + 2 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 应用 + + + + + + + + + + + 工位2相机视场标定 + + + + + + + 9 + 0 + + + + background-color: rgb(212, 212, 212); + + + + + + + + + + 0 + 0 + + + + + 12 + + + + + + + + + 12 + + + + + + + + + + + + + + + 3 + 0 + + + + + 12 + + + + 操作 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 12 + + + + 选择标定图像 + + + + :/Resource/img.png:/Resource/img.png + + + + + + + + + 应用 + + + + + + + + + + + + + + + XY坐标输出: + + + + + + + 位置互换 + + + + + + + + + + + 物理X方向偏移: + + + + + + + + + + + + + + 物理Y方向偏移: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 解锁 + + + + :/Resource/lock-open.png:/Resource/lock-open.png + + + + + + + + + + 0 + 0 + + + + 图像四点坐标: + + + + + + P3_X: + + + + + + + + 70 + 0 + + + + 1200 + + + true + + + + + + + P1_Y: + + + + + + + + 70 + 0 + + + + 1200 + + + true + + + + + + + P2_X: + + + + + + + 1200 + + + true + + + + + + + P1_X: + + + + + + + P2_Y: + + + + + + + 1200 + + + true + + + + + + + P4_X: + + + + + + + P3_Y: + + + + + + + P4_Y: + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + + true + + + + + + + + + + 场景四点坐标: + + + + + + P3_X: + + + + + + + P4_Y: + + + + + + + P1_Y: + + + + + + + P2_Y: + + + + + + + P4_X: + + + + + + + P3_Y: + + + + + + + + + + P1_X: + + + + + + + P2_X: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 测试点: + + + + + + 场景坐标: + + + + + + + 像素坐标: + + + + + + + + 0 + 0 + + + + 1 + + + + + + + 2 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + diff --git a/tpvs17/lpMain/lpMain.vcxproj b/tpvs17/lpMain/lpMain.vcxproj index a94afb4..c1a04cb 100644 --- a/tpvs17/lpMain/lpMain.vcxproj +++ b/tpvs17/lpMain/lpMain.vcxproj @@ -150,6 +150,7 @@ + @@ -173,6 +174,7 @@ + @@ -185,6 +187,10 @@ + + .\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSql;.\GeneratedFiles\$(ConfigurationName);.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\3part\tadpole\include\tpBase;.\..\..\src\lpMain\view;.\..\..\src\lpMain\cryptokey;.\..\..\3part\RsaCrypto\include;F:\ValueProject\newValve\3part\openssl-1.0.2n\vs13\include + .\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSql;.\GeneratedFiles\$(ConfigurationName);.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\3part\tadpole\include\tpBase;.\..\..\src\lpMain\view;.\..\..\src\lpMain\cryptokey;.\..\..\3part\RsaCrypto\include;F:\ValueProject\newValve\3part\openssl-1.0.2n\vs13\include + .\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSql;.\GeneratedFiles\$(ConfigurationName);.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\3part\tadpole\include\tpBase;.\..\..\src\lpMain\view .\GeneratedFiles;.;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSql;.\GeneratedFiles\$(ConfigurationName);.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\3part\tadpole\include\tpBase;.\..\..\src\lpMain\view diff --git a/tpvs17/lpMain/lpMain.vcxproj.filters b/tpvs17/lpMain/lpMain.vcxproj.filters index f968e03..372d560 100644 --- a/tpvs17/lpMain/lpMain.vcxproj.filters +++ b/tpvs17/lpMain/lpMain.vcxproj.filters @@ -53,11 +53,6 @@ {d14394a4-d4ae-4d47-b726-613b27aa46e7} - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false - @@ -204,6 +199,9 @@ lpMain\algela + + ImageStandardUI + @@ -329,6 +327,9 @@ Header Files + + ImageStandardUI + @@ -373,6 +374,9 @@ lpMain\algela + + ImageStandardUI + @@ -413,51 +417,51 @@ - - Header Files\Resource Files + + Resource Files - - Header Files\Resource Files + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files - Header Files\Resource Files + Resource Files - - Header Files\Resource Files + + Resource Files - Header Files\Resource Files + Resource Files - Header Files\Resource Files + Resource Files - Header Files\Resource Files - - - Header Files\Resource Files - - - Header Files\Resource Files - - - Header Files\Resource Files + Resource Files - - Header Files\Resource Files + + Resource Files - - Header Files\Resource Files + + Resource Files - - - Header Files\Resource Files - - Translation Files + + + Resource Files + + \ No newline at end of file diff --git a/更新记录/readme.docx b/更新记录/readme.docx new file mode 100644 index 0000000..0b136e9 Binary files /dev/null and b/更新记录/readme.docx differ