添加4点标定页面

master
bob.pan 4 years ago
parent 1f7fa52da7
commit 240e6d3277

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 300 KiB

@ -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
}

@ -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
}
]
}

@ -55,3 +55,6 @@
2021-10-28
1、修复空型号还能正常添加的bug
2、调整控件按钮的显示大小和字体
2021-11-03
1、增加4点场景标定支持通过系统参数设置页面勾选打开。默认情况下使用2点标定
2、UI相关调整 美化和增加提示

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

@ -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
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@ -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
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 194 KiB

@ -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
}
]
}

@ -5,8 +5,9 @@
"solution_type": 1,
"tasklist": [
"123",
"2423423",
"A1",
"B2",
"AAA",
"C3",
"D4",
"template"

@ -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
}
]
}

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

@ -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);

@ -160,6 +160,9 @@
<property name="text">
<string>1200</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
@ -167,6 +170,9 @@
<property name="text">
<string>1200</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="3">
@ -174,6 +180,9 @@
<property name="text">
<string>1200</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
@ -187,6 +196,9 @@
<property name="text">
<string>1200</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">

@ -24,5 +24,8 @@
</qresource>
<qresource prefix="/">
<file>Resource/no-img.png</file>
<file>Resource/img.png</file>
<file>Resource/lock.png</file>
<file>Resource/lock-open.png</file>
</qresource>
</RCC>

@ -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);

@ -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<QDiskCleanThread*> m_pDCThreadList;

@ -22,7 +22,7 @@
</font>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Main Version: 1.6.1028&lt;/p&gt;&lt;p&gt;Tadpole Version: 3.0.00&lt;/p&gt;&lt;p&gt;Final update date:20211028 15:00:00&lt;/p&gt;&lt;p&gt;Final Test data:20211028 15:00:00&lt;/p&gt;&lt;p&gt;单工位汽轮定位型号判别&lt;/p&gt;&lt;p&gt;CopyRight (C) 2016-2025 HangZhou Leaper &lt;/p&gt;&lt;p&gt;摩汽配件产品部&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Main Version: 1.6.1103&lt;/p&gt;&lt;p&gt;Tadpole Version: 3.0.00&lt;/p&gt;&lt;p&gt;Final update date:20211103 15:00:00&lt;/p&gt;&lt;p&gt;Final Test data:20211103 15:00:00&lt;/p&gt;&lt;p&gt;单工位汽轮定位型号判别&lt;/p&gt;&lt;p&gt;CopyRight (C) 2016-2025 HangZhou Leaper &lt;/p&gt;&lt;p&gt;摩汽配件产品部&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>

@ -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();
}

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>531</width>
<height>361</height>
<width>536</width>
<height>383</height>
</rect>
</property>
<property name="font">
@ -200,50 +200,6 @@
<string>系统设置</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7">
<item row="2" column="1" colspan="2">
<widget class="QPushButton" name="m_pbOK">
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>应用</string>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="3">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="font">
@ -329,6 +285,107 @@
</layout>
</widget>
</item>
<item row="3" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1" colspan="2">
<widget class="QPushButton" name="m_pbOK">
<property name="minimumSize">
<size>
<width>100</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>应用</string>
</property>
</widget>
</item>
<item row="3" column="3">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="4">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>图像保存:</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_SaveRltImg_st2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位2结果图</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_SaveRltImg_st1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位1结果图</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="checkBox_SaveSrcImg_st1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位1原图</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBox_SaveSrcImg_st2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位2原图</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="2" colspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
@ -475,57 +532,29 @@
</layout>
</widget>
</item>
<item row="1" column="0" colspan="4">
<widget class="QGroupBox" name="groupBox_2">
<item row="2" column="0" colspan="4">
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>图像保存</string>
<string>视场标定方案</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_SaveRltImg_st2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位2结果图</string>
</property>
</widget>
</item>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_SaveRltImg_st1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<widget class="QLabel" name="label_9">
<property name="text">
<string>保存工位1结果图</string>
<string>方案选择:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="checkBox_SaveSrcImg_st1">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>保存工位1原图</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="checkBox_SaveSrcImg_st2">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
<widget class="QCheckBox" name="checkBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>保存工位2原图</string>
<string>使用4点标定法不勾选时默认为2点标定方案</string>
</property>
</widget>
</item>

@ -4,7 +4,8 @@
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <opencv.hpp>
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;
}

@ -5,6 +5,39 @@
#include "lp_singleton_base.h"
#include <QMap>
#include <QPoint>
#include <QPolygonF>
#include <QPointF>
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<lpGlobalConfig>
{
@ -50,6 +83,9 @@ public:
QString m_rootPath;
int trigerFilter{ 1000 };//触发滤波时间
bool bUse4PointStand{ false };
StationStandard stationParam1;
StationStandard stationParam2;
};
#endif

@ -0,0 +1,623 @@
#include "lpImageCaliUI4P.h"
#include "QFileDialog"
#include "lpGlobalConfig.h"
#include <QSettings>
#include <QApplication>
#pragma execution_character_set("utf-8")
lpImageCaliUI4P::lpImageCaliUI4P(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
{
m_srcImgView_1 = replaceWidget<AwesomeImgViewer>(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<AwesomeImgViewer>(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";//图像展示比例的参数
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<typename _Widget>
_Widget* lpImageCaliUI4P::replaceWidget(QWidget* pSrcWidget)
{
if (!pSrcWidget) {
return nullptr;
}
QWidget* pParent = qobject_cast<QWidget*>(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("");
}
}

@ -0,0 +1,59 @@
#ifndef _LPIMAGECALIUI4P_H_
#define _LPIMAGECALIUI4P_H_
#include <QWidget>
#include "ui_lpImageCaliUI4P.h"
#include "AwesomeImgViewer.h"
class lpImageCaliUI4P : public QWidget
{
Q_OBJECT
public:
lpImageCaliUI4P(QWidget *parent = Q_NULLPTR);
~lpImageCaliUI4P();
template<typename _Widget>
_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

File diff suppressed because it is too large Load Diff

@ -150,6 +150,7 @@
<ClCompile Include="CMainWin.cpp" />
<ClCompile Include="lpGlobalConfig.cpp" />
<ClCompile Include="lpGlobalData.cpp" />
<ClCompile Include="lpImageCaliUI4P.cpp" />
<ClCompile Include="lpMain.cpp" />
<ClCompile Include="lpStationMgr.cpp" />
<ClCompile Include="lpSysConfig.cpp" />
@ -173,6 +174,7 @@
<QtUic Include="..\..\src\lpMain\cryptokey\QCryptokeyUI.ui" />
<QtUic Include="..\..\src\lpMain\lpImageCaliUI.ui" />
<QtUic Include="CMainWin.ui" />
<QtUic Include="lpImageCaliUI4P.ui" />
<QtUic Include="QAboutUI.ui" />
<QtUic Include="QAddModeUI.ui" />
<QtUic Include="QCameraConfigUI.ui" />
@ -185,6 +187,10 @@
<QtUic Include="QTestModeWid.ui" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="lpImageCaliUI4P.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\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</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\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</IncludePath>
</QtMoc>
<QtMoc Include="lpGlobalConfig.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\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</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\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</IncludePath>

@ -53,11 +53,6 @@
<Filter Include="ImageStandardUI">
<UniqueIdentifier>{d14394a4-d4ae-4d47-b726-613b27aa46e7}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Resource Files">
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
<Extensions>qrc;*</Extensions>
<ParseFiles>false</ParseFiles>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="lpMain.cpp">
@ -204,6 +199,9 @@
<ClCompile Include="..\..\src\lpMain\algela\qtUtils.cpp">
<Filter>lpMain\algela</Filter>
</ClCompile>
<ClCompile Include="lpImageCaliUI4P.cpp">
<Filter>ImageStandardUI</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="IMainWidget.h">
@ -329,6 +327,9 @@
<QtMoc Include="..\..\src\lpMain\saveimgthread.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="lpImageCaliUI4P.h">
<Filter>ImageStandardUI</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<QtUic Include="CMainWin.ui">
@ -373,6 +374,9 @@
<QtUic Include="..\..\src\lpMain\algela\AwesomeImgViewerBar.ui">
<Filter>lpMain\algela</Filter>
</QtUic>
<QtUic Include="lpImageCaliUI4P.ui">
<Filter>ImageStandardUI</Filter>
</QtUic>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\lpMain\CoreCtrl\CDllCoreCtrl.h">
@ -413,51 +417,51 @@
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\src\lpMain\wanfeng.png">
<Filter>Header Files\Resource Files</Filter>
<Image Include="..\..\src\lpMain\toolBar\administrator.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\wanfeng2.png">
<Filter>Header Files\Resource Files</Filter>
<Image Include="..\..\src\lpMain\app.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\app2.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\cali.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\education24.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\help.png">
<Filter>Header Files\Resource Files</Filter>
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\administrator.png">
<Filter>Header Files\Resource Files</Filter>
<Image Include="..\..\src\lpMain\toolBar\model.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\save.png">
<Filter>Header Files\Resource Files</Filter>
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\setting.png">
<Filter>Header Files\Resource Files</Filter>
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\test.png">
<Filter>Header Files\Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\cali.png">
<Filter>Header Files\Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\model.png">
<Filter>Header Files\Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\toolBar\education24.png">
<Filter>Header Files\Resource Files</Filter>
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\app.png">
<Filter>Header Files\Resource Files</Filter>
<Image Include="..\..\src\lpMain\wanfeng.png">
<Filter>Resource Files</Filter>
</Image>
<Image Include="..\..\src\lpMain\app2.png">
<Filter>Header Files\Resource Files</Filter>
<Image Include="..\..\src\lpMain\wanfeng2.png">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<QtRcc Include="..\..\src\lpMain\lpMain.qrc">
<Filter>Header Files\Resource Files</Filter>
</QtRcc>
</ItemGroup>
<ItemGroup>
<None Include="lpmain_en.ts">
<Filter>Translation Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<QtRcc Include="..\..\src\lpMain\lpMain.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
</ItemGroup>
</Project>

Binary file not shown.
Loading…
Cancel
Save