using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Windows.Forms;
|
using System.IO;
|
using HalconDotNet;
|
|
namespace HalconTools
|
{
|
public partial class frmContourAssistant : Form
|
{
|
public frmContourAssistant()
|
{
|
InitializeComponent();
|
}
|
|
public HImage MainImage1;
|
public HImage MainImage2;
|
public HImage MainImage3;
|
public HImage MainImage4;
|
public ContourAssistant mContourAssistant1;
|
public ContourAssistant mContourAssistant2;
|
public ContourAssistant mContourAssistant3;
|
public ContourAssistant mContourAssistant4;
|
public HObject ThresholdObj;
|
public HObject ConnectRegion;
|
public HObject ObjsSelect;
|
public HObject SelectedObj;
|
|
//参数
|
public ContourParam para = new ContourParam();
|
|
public void init()
|
{
|
mContourAssistant1 = new ContourAssistant(viewport1);
|
mContourAssistant2 = new ContourAssistant(viewport2);
|
mContourAssistant3 = new ContourAssistant(viewport3);
|
mContourAssistant4 = new ContourAssistant(viewport4);
|
|
cmbSelectObj.SelectedIndex = 0;
|
}
|
|
private void RBnone_CheckedChanged(object sender, EventArgs e)
|
{
|
mContourAssistant1.viewController.setViewState(HWndCtrl.MODE_VIEW_NONE);
|
mContourAssistant2.viewController.setViewState(HWndCtrl.MODE_VIEW_NONE);
|
mContourAssistant3.viewController.setViewState(HWndCtrl.MODE_VIEW_NONE);
|
mContourAssistant4.viewController.setViewState(HWndCtrl.MODE_VIEW_NONE);
|
}
|
|
private void RBmove_CheckedChanged(object sender, EventArgs e)
|
{
|
mContourAssistant1.viewController.setViewState(HWndCtrl.MODE_VIEW_MOVE);
|
mContourAssistant2.viewController.setViewState(HWndCtrl.MODE_VIEW_MOVE);
|
mContourAssistant3.viewController.setViewState(HWndCtrl.MODE_VIEW_MOVE);
|
mContourAssistant4.viewController.setViewState(HWndCtrl.MODE_VIEW_MOVE);
|
}
|
|
private void RBZoom_CheckedChanged(object sender, EventArgs e)
|
{
|
mContourAssistant1.viewController.setViewState(HWndCtrl.MODE_VIEW_ZOOM);
|
mContourAssistant2.viewController.setViewState(HWndCtrl.MODE_VIEW_ZOOM);
|
mContourAssistant3.viewController.setViewState(HWndCtrl.MODE_VIEW_ZOOM);
|
mContourAssistant4.viewController.setViewState(HWndCtrl.MODE_VIEW_ZOOM);
|
}
|
|
private void btnFitZoom_Click(object sender, EventArgs e)
|
{
|
mContourAssistant1.viewController.resetWindow();
|
mContourAssistant1.viewController.repaint();
|
mContourAssistant2.viewController.resetWindow();
|
mContourAssistant2.viewController.repaint();
|
mContourAssistant3.viewController.resetWindow();
|
mContourAssistant3.viewController.repaint();
|
mContourAssistant4.viewController.resetWindow();
|
mContourAssistant4.viewController.repaint();
|
}
|
|
private void btnResetAll_Click(object sender, EventArgs e)
|
{
|
mContourAssistant1.viewController.resetAll();
|
mContourAssistant1.viewController.repaint();
|
mContourAssistant2.viewController.resetAll();
|
mContourAssistant2.viewController.repaint();
|
mContourAssistant3.viewController.resetAll();
|
mContourAssistant3.viewController.repaint();
|
mContourAssistant4.viewController.resetAll();
|
mContourAssistant4.viewController.repaint();
|
}
|
|
private void frmContourAssistant_Load(object sender, EventArgs e)
|
{
|
init();
|
}
|
|
private void btnLoadImage_Click(object sender, EventArgs e)
|
{
|
OpenFileDialog imagePath = new OpenFileDialog();
|
imagePath.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
|
|
if (imagePath.ShowDialog() == DialogResult.OK)
|
{
|
if (!mContourAssistant1.SetImage(imagePath.FileName))
|
{
|
return;
|
}
|
|
MainImage1 = mContourAssistant1.GetImage();
|
mContourAssistant1.UpdateImage();
|
}
|
}
|
|
private void btnThreshold_Click(object sender, EventArgs e)
|
{
|
HOperatorSet.GenEmptyObj(out ThresholdObj);
|
ThresholdObj.Dispose();
|
HOperatorSet.Threshold(MainImage1, out ThresholdObj,
|
Convert.ToInt32(nUDThresholdMin.Value), Convert.ToInt32(nUDThresholdMax.Value));
|
|
mContourAssistant2.SetImage(MainImage1);
|
MainImage2 = mContourAssistant2.GetImage();
|
mContourAssistant2.UpdateImage();
|
|
mContourAssistant2.UpdateObj(ThresholdObj);
|
}
|
|
private void btnSelectShape_Click(object sender, EventArgs e)
|
{
|
//先将物体分开
|
HOperatorSet.GenEmptyObj(out ConnectRegion);
|
ConnectRegion.Dispose();
|
HOperatorSet.Connection(ThresholdObj, out ConnectRegion);
|
//选择物体
|
HOperatorSet.GenEmptyObj(out ObjsSelect);
|
ObjsSelect.Dispose();
|
HOperatorSet.SelectShape(ConnectRegion, out ObjsSelect, "area", "and",
|
Convert.ToInt32(nUDAreaMin.Value), Convert.ToInt32(nUDAreaMax.Value));
|
|
mContourAssistant3.SetImage(MainImage1);
|
MainImage3 = mContourAssistant3.GetImage();
|
mContourAssistant3.UpdateImage();
|
|
mContourAssistant3.UpdateObj(ObjsSelect, "green");
|
|
//将得到的结果载入到comboBox中
|
if (ObjsSelect.CountObj() == 0) return;
|
cmbSelectObj.Items.Clear();
|
for (int i = 0; i < ObjsSelect.CountObj(); i++)
|
{
|
cmbSelectObj.Items.Add(i + 1);
|
}
|
cmbSelectObj.SelectedIndex = 0;
|
}
|
|
private void btnSelect_Click(object sender, EventArgs e)
|
{
|
HOperatorSet.GenEmptyObj(out SelectedObj);
|
SelectedObj.Dispose();
|
HOperatorSet.SelectObj(ObjsSelect, out SelectedObj, cmbSelectObj.SelectedIndex + 1);
|
|
mContourAssistant4.SetImage(MainImage1);
|
MainImage4 = mContourAssistant4.GetImage();
|
mContourAssistant4.UpdateImage();
|
|
mContourAssistant4.UpdateObj(SelectedObj, "red");
|
|
HTuple area = null, row = null, col = null;
|
HOperatorSet.AreaCenter(SelectedObj, out area, out row, out col);
|
labArea.Text = area.ToString();
|
}
|
|
private void btnRun_Click(object sender, EventArgs e)
|
{
|
para = new ContourParam(Convert.ToInt32(nUDThresholdMin.Value), Convert.ToInt32(nUDThresholdMax.Value),
|
Convert.ToInt32(nUDAreaMin.Value), Convert.ToInt32(nUDAreaMax.Value),
|
cmbSelectObj.SelectedIndex + 1);
|
|
mContourAssistant1.SetPara(para);
|
if (mContourAssistant1.mImage == null) return;
|
mContourAssistant1.Run();
|
|
//窗口2显示
|
mContourAssistant2.SetImage(MainImage1);
|
MainImage2 = mContourAssistant2.GetImage();
|
mContourAssistant2.UpdateImage();
|
|
mContourAssistant2.UpdateObj(mContourAssistant1.mThresholdObj);
|
ThresholdObj = mContourAssistant1.mThresholdObj;
|
|
//窗口3显示
|
mContourAssistant3.SetImage(MainImage1);
|
MainImage3 = mContourAssistant3.GetImage();
|
mContourAssistant3.UpdateImage();
|
|
mContourAssistant3.UpdateObj(mContourAssistant1.mSelectObj, "green");
|
ObjsSelect = mContourAssistant1.mSelectObj;
|
|
if (mContourAssistant1.mSelectObj.CountObj() == 0) return;
|
cmbSelectObj.Items.Clear();
|
for (int i = 0; i < mContourAssistant1.mSelectObj.CountObj(); i++)
|
{
|
cmbSelectObj.Items.Add(i + 1);
|
}
|
|
//窗口4显示
|
mContourAssistant4.SetImage(MainImage1);
|
MainImage4 = mContourAssistant4.GetImage();
|
mContourAssistant4.UpdateImage();
|
|
mContourAssistant4.UpdateObj(mContourAssistant1.mObject, "red");
|
SelectedObj = mContourAssistant1.mObject;
|
}
|
|
private void btnParaSave_Click(object sender, EventArgs e)
|
{
|
para = new ContourParam(Convert.ToInt32(nUDThresholdMin.Value), Convert.ToInt32(nUDThresholdMax.Value),
|
Convert.ToInt32(nUDAreaMin.Value), Convert.ToInt32(nUDAreaMax.Value),
|
cmbSelectObj.SelectedIndex + 1);
|
|
string path = System.Windows.Forms.Application.StartupPath + "\\ContourConfige";
|
if (!Directory.Exists(path))
|
{
|
Directory.CreateDirectory(path);
|
}
|
path += "\\ContourConfige.xml";
|
|
SerializeFileTool<ContourParam> sft = new SerializeFileTool<ContourParam>();
|
sft.SetConfig(path, para);
|
}
|
|
private void cmbSelectObj_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
|
}
|
}
|
}
|