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