using HalconDotNet;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using static LB_VisionProcesses.Alogrithms.Halcon.HFindModelTool;
|
|
namespace LB_VisionProcesses.Alogrithms.Halcon
|
{
|
public partial class HMulitModelControl : UserControl
|
{
|
public HFindModelTool HFindModelTool = new HFindModelTool();
|
public string fullPath = string.Empty;
|
|
public Action<string> DeleteModel;
|
public Action<string> RenameModel;
|
HWindowControl hWindowControl = new HWindowControl();
|
|
public HMulitModelControl()
|
{
|
InitializeComponent();
|
}
|
|
public HMulitModelControl(string fullPath)
|
{
|
InitializeComponent();
|
pnlModelImg.Controls.Clear();
|
pnlModelImg.Controls.Add(hWindowControl);
|
hWindowControl.Dock = DockStyle.Fill;
|
|
this.fullPath = fullPath;
|
HFindModelTool.Load(fullPath);
|
|
if (HFindModelTool.ModelID.hvModel != null && HFindModelTool.ModelID.hvModel.Length > 0)
|
{
|
HModel hModel = HFindModelTool.ModelID;
|
HObject ho_ModelContours = new HObject();
|
switch (HFindModelTool.ModelID.Type)
|
{
|
case ModelType.局部变形模板:
|
HOperatorSet.GetDeformableModelContours(out ho_ModelContours, HFindModelTool.ModelID.hvModel, 1);
|
break;
|
case ModelType.各向异形模板:
|
default:
|
HOperatorSet.GetShapeModelContours(out ho_ModelContours, HFindModelTool.ModelID.hvModel, 1);
|
break;
|
}
|
HOperatorSet.GetImageSize(HFindModelTool.ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
|
HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
|
HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
|
|
if (HFindModelTool.ModelID.hoImage != null)
|
{
|
hWindowControl.Dock = DockStyle.Fill;
|
|
HOperatorSet.ClearWindow(hWindowControl.HalconWindow);
|
HOperatorSet.GetImageSize(HFindModelTool.ModelID.hoImage, out HTuple hv_imageWidth, out HTuple hv_imageHeight);
|
HOperatorSet.SetPart(hWindowControl.HalconWindow, 0, 0, hv_imageHeight - 1, hv_imageWidth - 1);
|
HOperatorSet.DispObj(HFindModelTool.ModelID.hoImage, hWindowControl.HalconWindow);
|
HOperatorSet.SetColor(hWindowControl.HalconWindow, "red");
|
HOperatorSet.DispObj(ho_ModelContours, hWindowControl.HalconWindow);
|
|
txtModelName.Text = HFindModelTool.ModelID.ModelName;
|
}
|
}
|
}
|
|
public HMulitModelControl(int index, string name)
|
{
|
InitializeComponent();
|
pnlModelImg.Controls.Clear();
|
pnlModelImg.Controls.Add(hWindowControl);
|
hWindowControl.Dock = DockStyle.Fill;
|
|
lblIndex.Text = index.ToString();
|
txtModelName.Text = name;
|
HFindModelTool = new HFindModelTool();
|
HFindModelTool.strProcessName = name;
|
HFindModelTool.ModelID.ModelName = name;
|
}
|
|
private void btnEditModel_Click(object sender, EventArgs e)
|
{
|
if (HFindModelTool != null)
|
{
|
//HFindModelTool的InputImage有值则会显示图片
|
ProcessEditForm processEditForm = new ProcessEditForm(HFindModelTool, fullPath);
|
processEditForm.ShowDialog();
|
|
UpdataModelUI();
|
}
|
}
|
|
private void btnDelModel_Click(object sender, EventArgs e)
|
{
|
DeleteModel?.Invoke(lblIndex.Text);
|
}
|
|
public void UpdataModelUI()
|
{
|
if (HFindModelTool.ModelID.hvModel != null && HFindModelTool.ModelID.hvModel.Length > 0)
|
{
|
HModel hModel = HFindModelTool.ModelID;
|
HObject ho_ModelContours = new HObject();
|
switch (HFindModelTool.ModelID.Type)
|
{
|
case ModelType.局部变形模板:
|
HOperatorSet.GetDeformableModelContours(out ho_ModelContours, HFindModelTool.ModelID.hvModel, 1);
|
break;
|
case ModelType.各向异形模板:
|
default:
|
HOperatorSet.GetShapeModelContours(out ho_ModelContours, HFindModelTool.ModelID.hvModel, 1);
|
break;
|
}
|
|
if (HFindModelTool.ModelID.hoImage != null)
|
{
|
HOperatorSet.GetImageSize(HFindModelTool.ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
|
HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
|
HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
|
|
HOperatorSet.ClearWindow(hWindowControl.HalconWindow);
|
HOperatorSet.GetImageSize(HFindModelTool.ModelID.hoImage, out HTuple hv_imageWidth, out HTuple hv_imageHeight);
|
HOperatorSet.SetPart(hWindowControl.HalconWindow, 0, 0, hv_imageHeight - 1, hv_imageWidth - 1);
|
HOperatorSet.DispObj(HFindModelTool.ModelID.hoImage, hWindowControl.HalconWindow);
|
HOperatorSet.SetColor(hWindowControl.HalconWindow, "red");
|
HOperatorSet.DispObj(ho_ModelContours, hWindowControl.HalconWindow);
|
}
|
}
|
}
|
|
public void Rename(int index, string newName)
|
{
|
this.BeginInvoke(new Action(() =>
|
{
|
lblIndex.Text = index.ToString();
|
txtModelName.Text = newName;
|
|
HFindModelTool.strProcessName = newName;
|
HFindModelTool.ModelID.ModelName = newName;
|
}));
|
}
|
}
|
}
|