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 frmScrewAssistant : Form
|
{
|
HImage MainImage = new HImage();
|
ScrewAssistant mScrewAssistant;
|
public ScrewParam mScrewPara = new ScrewParam();
|
ScrewResult mScrewResult = new ScrewResult();
|
HXLDCont thresholdXLD = new HXLDCont();
|
HXLDCont roundnessXLD = new HXLDCont();
|
HXLDCont selectedXLD = new HXLDCont();
|
|
SerializeFileTool<ScrewParam> sft = new SerializeFileTool<ScrewParam>();
|
|
public frmScrewAssistant()
|
{
|
InitializeComponent();
|
|
init();
|
}
|
|
public frmScrewAssistant(JobTool tool ,HImage image)
|
{
|
InitializeComponent();
|
|
init();
|
|
MainImage = image;
|
mScrewAssistant.SetImage(MainImage);
|
mScrewAssistant.UpdateImage();
|
|
if (tool.screwParam == null)
|
{
|
mScrewPara.ThresholdSubPix = 200;
|
mScrewPara.RoundnessMin = 0.8;
|
mScrewPara.RoundnessMax = 1;
|
mScrewPara.RadiusMin = 100;
|
mScrewPara.RadiusMax = 200;
|
}
|
else
|
{
|
mScrewPara = tool.screwParam;
|
}
|
}
|
|
private void frmScrewAssistant_Load(object sender, EventArgs e)
|
{
|
if (mScrewPara.ThresholdSubPix == null)
|
{
|
string path = System.Windows.Forms.Application.StartupPath + "\\ScrewConfige";
|
if (!Directory.Exists(path))
|
{
|
Directory.CreateDirectory(path);
|
}
|
path += "\\ScrewConfige.xml";
|
|
if (!File.Exists(path))
|
{
|
mScrewPara.ThresholdSubPix = 200;
|
mScrewPara.RoundnessMin = 0.8;
|
mScrewPara.RoundnessMax = 1;
|
mScrewPara.RadiusMin = 100;
|
mScrewPara.RadiusMax = 200;
|
|
sft.SetConfig(path, mScrewPara);
|
}
|
|
mScrewPara = sft.GetConfig(path);
|
}
|
|
txtThresholdSubPix.Text = mScrewPara.ThresholdSubPix.ToString();
|
txtRoundnessMin.Text = mScrewPara.RoundnessMin.ToString();
|
txtRoundnessMax.Text = mScrewPara.RoundnessMax.ToString();
|
txtRadiusMin.Text = mScrewPara.RadiusMin.ToString();
|
txtRadiusMax.Text = mScrewPara.RadiusMax.ToString();
|
}
|
|
private void init()
|
{
|
mScrewAssistant = new ScrewAssistant(hWindowControl1);
|
mScrewAssistant.SetPara(mScrewPara);
|
|
mScrewAssistant.ScrewDone += new ScrewDelegate(mScrewAssistant_ScrewDone);
|
}
|
|
void mScrewAssistant_ScrewDone(ScrewResult result)
|
{
|
if (result == null)
|
{
|
MessageBox.Show("没找到");
|
}
|
else
|
{
|
HOperatorSet.DispCircle(hWindowControl1.HalconWindow, result.row, result.col, result.radius);
|
}
|
}
|
|
private void rbNone_CheckedChanged(object sender, EventArgs e)
|
{
|
mScrewAssistant.viewController.setViewState(HWndCtrl.MODE_VIEW_NONE);
|
}
|
|
private void rbMove_CheckedChanged(object sender, EventArgs e)
|
{
|
mScrewAssistant.viewController.setViewState(HWndCtrl.MODE_VIEW_MOVE);
|
}
|
|
private void rbZoom_CheckedChanged(object sender, EventArgs e)
|
{
|
mScrewAssistant.viewController.setViewState(HWndCtrl.MODE_VIEW_ZOOM);
|
}
|
|
private void btnReset_Click(object sender, EventArgs e)
|
{
|
mScrewAssistant.viewController.resetWindow();
|
mScrewAssistant.viewController.repaint();
|
}
|
|
private void btnThresholdSubPix_Click(object sender, EventArgs e)
|
{
|
mScrewPara.ThresholdSubPix = Convert.ToDouble(txtThresholdSubPix.Text);
|
mScrewAssistant.SetPara(mScrewPara);
|
|
thresholdXLD = mScrewAssistant.ThresholdSubPix(mScrewAssistant.mImage);
|
mScrewAssistant.UpdateObj((HObject)thresholdXLD, "green");
|
}
|
|
private void btnRoundness_Click(object sender, EventArgs e)
|
{
|
mScrewPara.RoundnessMin = Convert.ToDouble(txtRoundnessMin.Text);
|
mScrewPara.RoundnessMax = Convert.ToDouble(txtRoundnessMax.Text);
|
mScrewAssistant.SetPara(mScrewPara);
|
|
roundnessXLD = mScrewAssistant.RoundnessXLD(thresholdXLD);
|
mScrewAssistant.UpdateObj((HObject)roundnessXLD, "red");
|
}
|
|
private void btnRadius_Click(object sender, EventArgs e)
|
{
|
mScrewPara.RadiusMin = Convert.ToDouble(txtRadiusMin.Text);
|
mScrewPara.RadiusMax = Convert.ToDouble(txtRadiusMax.Text);
|
mScrewAssistant.SetPara(mScrewPara);
|
|
selectedXLD = mScrewAssistant.SelectXLD(roundnessXLD);
|
mScrewAssistant.UpdateObj((HObject)selectedXLD, "black");
|
}
|
|
private void btnRun_Click(object sender, EventArgs e)
|
{
|
mScrewAssistant.UpdateImage();
|
mScrewAssistant.Run();
|
}
|
|
private void btnSavePara_Click(object sender, EventArgs e)
|
{
|
mScrewPara.RadiusMax = Convert.ToDouble(txtRadiusMax.Text);
|
mScrewPara.RadiusMin = Convert.ToDouble(txtRadiusMin.Text);
|
mScrewPara.RoundnessMax = Convert.ToDouble(txtRoundnessMax.Text);
|
mScrewPara.RoundnessMin = Convert.ToDouble(txtRoundnessMin.Text);
|
mScrewPara.ThresholdSubPix = Convert.ToDouble(txtThresholdSubPix.Text);
|
|
mScrewAssistant.SetPara(mScrewPara);
|
|
string path = System.Windows.Forms.Application.StartupPath + "\\ScrewConfige";
|
if (!Directory.Exists(path))
|
{
|
Directory.CreateDirectory(path);
|
}
|
path += "\\ScrewConfige.xml";
|
|
sft.SetConfig(path, mScrewPara);
|
}
|
|
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 (!mScrewAssistant.SetImage(imagePath.FileName))
|
{
|
return;
|
}
|
|
MainImage = mScrewAssistant.mImage;
|
mScrewAssistant.UpdateImage();
|
}
|
}
|
}
|
}
|