mirror of
https://github.com/eggplantlwj/VisionEdit.git
synced 2026-04-05 09:46:35 +08:00
1、修复找线工具的selectObject无法实时跟随的问题
2、可以重定义找线工具的初始位置 3、在工具初始化时加入防止其他事件更改UI参数的逻辑,以解决工具参数无法保存的bug
This commit is contained in:
8
PMAlignTool/FormPMAlignTool.Designer.cs
generated
8
PMAlignTool/FormPMAlignTool.Designer.cs
generated
@@ -1030,6 +1030,7 @@ namespace PMAlignTool
|
||||
this.nud_angleRange.Size = new System.Drawing.Size(102, 28);
|
||||
this.nud_angleRange.TabIndex = 182;
|
||||
this.nud_angleRange.Value = 10D;
|
||||
this.nud_angleRange.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// ckb_autoContrast
|
||||
//
|
||||
@@ -1071,6 +1072,7 @@ namespace PMAlignTool
|
||||
this.nud_ScaleRange.Size = new System.Drawing.Size(104, 28);
|
||||
this.nud_ScaleRange.TabIndex = 180;
|
||||
this.nud_ScaleRange.Value = 1.1D;
|
||||
this.nud_ScaleRange.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// nud_ScaleStart
|
||||
//
|
||||
@@ -1100,6 +1102,7 @@ namespace PMAlignTool
|
||||
this.nud_ScaleStart.Size = new System.Drawing.Size(96, 28);
|
||||
this.nud_ScaleStart.TabIndex = 179;
|
||||
this.nud_ScaleStart.Value = 0.9D;
|
||||
this.nud_ScaleStart.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// nud_angleStart
|
||||
//
|
||||
@@ -1129,6 +1132,7 @@ namespace PMAlignTool
|
||||
this.nud_angleStart.Size = new System.Drawing.Size(96, 28);
|
||||
this.nud_angleStart.TabIndex = 176;
|
||||
this.nud_angleStart.Value = -10D;
|
||||
this.nud_angleStart.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// cbx_polarity
|
||||
//
|
||||
@@ -1176,6 +1180,7 @@ namespace PMAlignTool
|
||||
this.nud_minScore.Size = new System.Drawing.Size(227, 26);
|
||||
this.nud_minScore.TabIndex = 173;
|
||||
this.nud_minScore.Value = 0.8D;
|
||||
this.nud_minScore.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// nud_Timeout
|
||||
//
|
||||
@@ -1205,6 +1210,7 @@ namespace PMAlignTool
|
||||
this.nud_Timeout.Size = new System.Drawing.Size(227, 28);
|
||||
this.nud_Timeout.TabIndex = 177;
|
||||
this.nud_Timeout.Value = 500D;
|
||||
this.nud_Timeout.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// nud_angleStep
|
||||
//
|
||||
@@ -1234,6 +1240,7 @@ namespace PMAlignTool
|
||||
this.nud_angleStep.Size = new System.Drawing.Size(227, 28);
|
||||
this.nud_angleStep.TabIndex = 175;
|
||||
this.nud_angleStep.Value = 1D;
|
||||
this.nud_angleStep.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// nud_matchNum
|
||||
//
|
||||
@@ -1263,6 +1270,7 @@ namespace PMAlignTool
|
||||
this.nud_matchNum.Size = new System.Drawing.Size(227, 28);
|
||||
this.nud_matchNum.TabIndex = 174;
|
||||
this.nud_matchNum.Value = 1D;
|
||||
this.nud_matchNum.ValueChanged += new Controls.DValueChanged(this.UIParams_ValueChanged);
|
||||
//
|
||||
// tkb_contrast
|
||||
//
|
||||
|
||||
@@ -102,6 +102,7 @@ namespace PMAlignTool
|
||||
tkb_contrast.Value = myPMAlign.contrast;
|
||||
|
||||
#endregion
|
||||
isInitTool = false;
|
||||
}
|
||||
|
||||
private void btnAcqNewModelImage_Click(object sender, EventArgs e)
|
||||
@@ -305,5 +306,21 @@ namespace PMAlignTool
|
||||
{
|
||||
lbl_contastValue.Text = tkb_contrast.Value.ToString();
|
||||
}
|
||||
|
||||
private void UIParams_ValueChanged(double value)
|
||||
{
|
||||
if (!isInitTool)
|
||||
{
|
||||
myPMAlign.minScore = nud_minScore.Value;
|
||||
myPMAlign.startAngle = Convert.ToInt16(nud_angleStart.Value);
|
||||
myPMAlign.angleRange = Convert.ToInt16(nud_angleRange.Value);
|
||||
myPMAlign.angleStep = Convert.ToInt16(nud_angleStep.Value);
|
||||
myPMAlign.polarity = cbx_polarity.TextStr;
|
||||
myPMAlign.isAutoConstants = ckb_autoContrast.Checked;
|
||||
myPMAlign.minScale = nud_ScaleStart.Value;
|
||||
myPMAlign.maxScale = nud_ScaleRange.Value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,21 +211,6 @@
|
||||
<metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Column12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>71</value>
|
||||
</metadata>
|
||||
|
||||
@@ -117,6 +117,10 @@ namespace PMAlignTool
|
||||
public HObject oldTrainImage { get; set; }
|
||||
public bool isCreateModel { get; set; }
|
||||
internal string pmaModelName { get; set; } = Guid.NewGuid().ToString();
|
||||
/// <summary>
|
||||
/// 模板位置和实际位置的姿态差异
|
||||
/// </summary>
|
||||
internal HTuple posHomMat2D = new HTuple();
|
||||
|
||||
public override void DispMainWindow(HWindow dispHWindow)
|
||||
{
|
||||
@@ -185,7 +189,7 @@ namespace PMAlignTool
|
||||
//对预期线的找模板区域做放射变换
|
||||
|
||||
}
|
||||
UpdateParamsFromUI(); // 操作前先将UI中参数写入类
|
||||
// UpdateParamsFromUI(); // 操作前先将UI中参数写入类
|
||||
HObject findModelImg = ProcessImage(inputImage);
|
||||
int ret = FindModelTemplate(findModelImg);
|
||||
ToolRunStatu myState = ret == 0 ? ToolRunStatu.Succeed : ToolRunStatu.Model_UnFound;
|
||||
@@ -239,6 +243,18 @@ namespace PMAlignTool
|
||||
}
|
||||
}
|
||||
|
||||
public void SetParamsFromUI()
|
||||
{
|
||||
minScore = FormPMAlignTool.Instance.nud_minScore.Value;
|
||||
startAngle = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStart.Value);
|
||||
angleRange = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleRange.Value);
|
||||
angleStep = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStep.Value);
|
||||
polarity = FormPMAlignTool.Instance.cbx_polarity.TextStr;
|
||||
isAutoConstants = FormPMAlignTool.Instance.ckb_autoContrast.Checked;
|
||||
minScale = FormPMAlignTool.Instance.nud_ScaleStart.Value;
|
||||
maxScale = FormPMAlignTool.Instance.nud_ScaleRange.Value;
|
||||
}
|
||||
|
||||
public int CreateModelTemplate()
|
||||
{
|
||||
HObject template;
|
||||
@@ -254,14 +270,7 @@ namespace PMAlignTool
|
||||
HOperatorSet.GenEmptyObj(out createModelImg);
|
||||
createModelImg = ProcessImage(inputImage);
|
||||
HOperatorSet.ReduceDomain(createModelImg, templateRegion, out template);
|
||||
minScore = FormPMAlignTool.Instance.nud_minScore.Value;
|
||||
startAngle = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStart.Value);
|
||||
angleRange = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleRange.Value);
|
||||
angleStep = Convert.ToInt16(FormPMAlignTool.Instance.nud_angleStep.Value);
|
||||
polarity = FormPMAlignTool.Instance.cbx_polarity.TextStr;
|
||||
isAutoConstants = FormPMAlignTool.Instance.ckb_autoContrast.Checked;
|
||||
minScale = FormPMAlignTool.Instance.nud_ScaleStart.Value;
|
||||
maxScale = FormPMAlignTool.Instance.nud_ScaleRange.Value;
|
||||
//SetParamsFromUI();
|
||||
try
|
||||
{
|
||||
HTuple rows, cols, angles, scores, scale;
|
||||
@@ -291,38 +300,6 @@ namespace PMAlignTool
|
||||
out cols,
|
||||
out angles,
|
||||
out scores);
|
||||
/*
|
||||
HOperatorSet.CreateScaledShapeModel(template,
|
||||
"auto",
|
||||
((HTuple)startAngle).TupleRad(),
|
||||
((HTuple)angleRange).TupleRad(),
|
||||
"auto",
|
||||
minScale,
|
||||
maxScale,
|
||||
"auto",
|
||||
"auto",
|
||||
polarity,
|
||||
isAutoConstants ? (HTuple)"auto" : (HTuple)contrast,
|
||||
"auto",
|
||||
out modelID);
|
||||
HOperatorSet.FindScaledShapeModel(createModelImg,
|
||||
(HTuple)modelID,
|
||||
((HTuple)startAngle).TupleRad(),
|
||||
((HTuple)angleRange - startAngle).TupleRad(),
|
||||
minScale,
|
||||
maxScale,
|
||||
(HTuple)minScore,
|
||||
(HTuple)matchNum,
|
||||
(HTuple)0.5,
|
||||
(HTuple)"least_squares",
|
||||
(HTuple)0,
|
||||
(HTuple)0.9,
|
||||
out rows,
|
||||
out cols,
|
||||
out angles,
|
||||
out scale,
|
||||
out scores);
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -354,6 +331,7 @@ namespace PMAlignTool
|
||||
{
|
||||
templatePose = new PosXYU { X = rows[0].D, Y = cols[0].D , U = angles[0].D };
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -463,6 +441,7 @@ namespace PMAlignTool
|
||||
L_resultList.Add(matchResult);
|
||||
}
|
||||
MatchResult temp;
|
||||
// 将匹配结果按分值由大到小排序
|
||||
for (int i = 0; i < L_resultList.Count - 1; i++)
|
||||
{
|
||||
for (int j = i + 1; j < L_resultList.Count; j++)
|
||||
@@ -475,6 +454,7 @@ namespace PMAlignTool
|
||||
}
|
||||
}
|
||||
}
|
||||
HOperatorSet.VectorAngleToRigid(templatePose.X, templatePose.Y, templatePose.U, L_resultList[0].Row, L_resultList[0].Col, L_resultList[0].Angle, out posHomMat2D);
|
||||
}
|
||||
if (softwareRunState == SoftwareRunState.Debug)
|
||||
{
|
||||
|
||||
@@ -67,9 +67,7 @@ namespace PMAlignTool
|
||||
// 将输出值赋值到界面输出中
|
||||
if (myPMAlign.L_resultList.Count > 0)
|
||||
{
|
||||
L_toolList[toolIndex].toolOutput[0] = new ToolIO("GetPose",
|
||||
new PosXYU { X = myPMAlign.L_resultList[0].Row, Y = myPMAlign.L_resultList[0].Col, U = myPMAlign.L_resultList[0].Angle },
|
||||
DataType.Pose);
|
||||
L_toolList[toolIndex].toolOutput[0] = new ToolIO("GetPose", myPMAlign.posHomMat2D,DataType.Pose);
|
||||
L_toolList[toolIndex].toolOutput[1] = new ToolIO("GetPose.X", myPMAlign.L_resultList[0].Row, DataType.IntValue);
|
||||
L_toolList[toolIndex].toolOutput[2] = new ToolIO("GetPose.Y", myPMAlign.L_resultList[0].Col, DataType.IntValue);
|
||||
L_toolList[toolIndex].toolOutput[3] = new ToolIO("GetPose.Z", myPMAlign.L_resultList[0].Angle, DataType.DoubleValue);
|
||||
|
||||
Reference in New Issue
Block a user