Commit c00b7345 LN

增加测试效果图显示。

1 个父辈 4645d3ac
...@@ -14,7 +14,10 @@ namespace AOI ...@@ -14,7 +14,10 @@ namespace AOI
{ {
public class AoiProject public class AoiProject
{ {
private AoiProject()
{
}
public AoiProject(Image theImage) public AoiProject(Image theImage)
{ {
this.standardImage = theImage; this.standardImage = theImage;
...@@ -102,13 +105,15 @@ namespace AOI ...@@ -102,13 +105,15 @@ namespace AOI
/// 加载项目 /// 加载项目
/// </summary> /// </summary>
/// <param name="filePath"></param> /// <param name="filePath"></param>
public string Load(string filePath) public static AoiProject Load(string filePath, out string msg)
{ {
msg = "";
try try
{ {
AoiProject aoiProject = new AoiProject();
Dictionary<string, string> projectMap = JsonUtil.DeserializeJsonToObjectFromFile<Dictionary<string, string>>(filePath); Dictionary<string, string> projectMap = JsonUtil.DeserializeJsonToObjectFromFile<Dictionary<string, string>>(filePath);
string base64Img = projectMap["base64Img"]; string base64Img = projectMap["base64Img"];
this.standardImage = Base64Util.ToImage(base64Img); aoiProject.standardImage = Base64Util.ToImage(base64Img);
string methodMapJson = projectMap["methodMap"]; string methodMapJson = projectMap["methodMap"];
var jsonMap = JsonUtil.DeserializeJsonToObject<Dictionary<string, string>>(methodMapJson); var jsonMap = JsonUtil.DeserializeJsonToObject<Dictionary<string, string>>(methodMapJson);
foreach (var item in jsonMap) foreach (var item in jsonMap)
...@@ -123,14 +128,17 @@ namespace AOI ...@@ -123,14 +128,17 @@ namespace AOI
string PathDataStr = obj.Value<string>("PathDataStr"); string PathDataStr = obj.Value<string>("PathDataStr");
PathData pathData = JsonUtil.DeserializeJsonToObject<PathData>(PathDataStr); PathData pathData = JsonUtil.DeserializeJsonToObject<PathData>(PathDataStr);
aoiMethod.RoiPath = new GraphicsPath(pathData.Points, pathData.Types); aoiMethod.RoiPath = new GraphicsPath(pathData.Points, pathData.Types);
methodMap.Add(item.Key, aoiMethod); aoiProject.methodMap.Add(item.Key, aoiMethod);
return "";
} }
}catch(Exception ex) return aoiProject;
}
catch (Exception ex)
{ {
return ex.ToString(); msg = ex.ToString();
return null;
} }
return "";
} }
......
...@@ -69,6 +69,7 @@ namespace AOI ...@@ -69,6 +69,7 @@ namespace AOI
if(resultImage != null) if(resultImage != null)
{ {
resultBean.result = true; resultBean.result = true;
resultBean.currentRoiImage = resultImage;
} }
return resultBean; return resultBean;
} }
...@@ -152,10 +153,10 @@ namespace AOI ...@@ -152,10 +153,10 @@ namespace AOI
Mat fixedMat = new Mat(); Mat fixedMat = new Mat();
Cv2.WarpAffine(matToCheck, fixedMat, affine,new OpenCvSharp.Size(standardImage.Width, standardImage.Height)); Cv2.WarpAffine(matToCheck, fixedMat, affine,new OpenCvSharp.Size(standardImage.Width, standardImage.Height));
//var fixedMat = FixImage(affine, matToCheck); //var fixedMat = FixImage(affine, matToCheck);
Image markImage = GetRoiImage(ImageUtil.ToImage(fixedMat), RoiPath, true); //Image markImage = GetRoiImage(ImageUtil.ToImage(fixedMat), RoiPath, true);
//Cv2.ImShow("Fixed", ImageUtil.ToMat(markImage)); // return markImage;
//return ImageUtil.ToImage(fixedMat); // Cv2.ImShow("Fixed", ImageUtil.ToMat(markImage));
return markImage; return ImageUtil.ToImage(fixedMat);
} }
//bool needCut = false; //bool needCut = false;
////标准图中的Mart区域 ////标准图中的Mart区域
......
...@@ -15,7 +15,8 @@ namespace AccAOI ...@@ -15,7 +15,8 @@ namespace AccAOI
public partial class FrmAoiSetting : Asa.Theme.FlatForm public partial class FrmAoiSetting : Asa.Theme.FlatForm
{ {
private control.ABaseControl aoiControl = null; private control.ABaseControl aoiControl = null;
public static Image Img = null; public static Image BaseImg = null;
public static Image TestImage = null;
private AoiProject Project = null; private AoiProject Project = null;
private bool CanSel = true; private bool CanSel = true;
private string DefaultPath = ""; private string DefaultPath = "";
...@@ -30,8 +31,10 @@ namespace AccAOI ...@@ -30,8 +31,10 @@ namespace AccAOI
this.WindowState = FormWindowState.Maximized; this.WindowState = FormWindowState.Maximized;
if (!programPath.Equals("") && (image != null)) if (!programPath.Equals("") && (image != null))
{ {
Project = new AoiProject(image); BaseImg = image;
string result = Project.Load(programPath); // Project = new AoiProject(image);
string result = "";
Project= AoiProject.Load(programPath,out result);
if (!result.Equals("")) if (!result.Equals(""))
{ {
MessageBox.Show("加载项目" + programPath + "失败:\r\n" + result); MessageBox.Show("加载项目" + programPath + "失败:\r\n" + result);
...@@ -52,8 +55,8 @@ namespace AccAOI ...@@ -52,8 +55,8 @@ namespace AccAOI
if (System.IO.File.Exists(defaultImg)) if (System.IO.File.Exists(defaultImg))
{ {
//读取图片内容 //读取图片内容
Img = (Image)Image.FromFile(defaultImg).Clone(); BaseImg = (Image)Image.FromFile(defaultImg).Clone();
imageBox1.Image = Img; imageBox1.Image = BaseImg;
} }
} }
...@@ -73,8 +76,16 @@ namespace AccAOI ...@@ -73,8 +76,16 @@ namespace AccAOI
string fileName = openDialog.FileName; string fileName = openDialog.FileName;
//读取图片内容 //读取图片内容
Img = (Image)Image.FromFile(fileName).Clone(); BaseImg = (Image)Image.FromFile(fileName).Clone();
imageBox1.Image = Img; if (Project != null)
{
Project.standardImage = BaseImg;
}
imageBox1.Image = BaseImg;
if (imageBox1.Visible.Equals(false))
{
btnImageChange_Click(null, null);
}
} }
private void btnGetCameraImg_Click(object sender, EventArgs e) private void btnGetCameraImg_Click(object sender, EventArgs e)
...@@ -103,8 +114,9 @@ namespace AccAOI ...@@ -103,8 +114,9 @@ namespace AccAOI
return; return;
} }
string fileName = openDialog.FileName; string fileName = openDialog.FileName;
Project = new AoiProject(Img); // Project = new AoiProject(BaseImg);
string msg = Project.Load(fileName); string msg = "";
Project = AoiProject.Load(fileName, out msg);
if (!msg.Equals("")) if (!msg.Equals(""))
{ {
MessageBox.Show("加载项目" + fileName + "失败:\r\n" + msg); MessageBox.Show("加载项目" + fileName + "失败:\r\n" + msg);
...@@ -140,14 +152,14 @@ namespace AccAOI ...@@ -140,14 +152,14 @@ namespace AccAOI
private void btnNewAoi_Click(object sender, EventArgs e) private void btnNewAoi_Click(object sender, EventArgs e)
{ {
if (Img == null) if (BaseImg == null)
{ {
MessageBox.Show("清先打开图片"); MessageBox.Show("清先选择基准图片");
return; return;
} }
if (this.Project == null) if (this.Project == null)
{ {
Project = new AoiProject(Img); Project = new AoiProject(BaseImg);
} }
if (comType.Text.Equals("")) if (comType.Text.Equals(""))
{ {
...@@ -170,7 +182,7 @@ namespace AccAOI ...@@ -170,7 +182,7 @@ namespace AccAOI
CanSel = false; CanSel = false;
imageBox1.SelectNone(); imageBox1.SelectNone();
imageBox1.Image = Img; imageBox1.Image = BaseImg;
CanSel = true; CanSel = true;
if (aoiControl == null) if (aoiControl == null)
{ {
...@@ -284,7 +296,7 @@ namespace AccAOI ...@@ -284,7 +296,7 @@ namespace AccAOI
{ {
return; return;
} }
if (imageBox1.Image == null || Img == null || aoiControl == null) if (imageBox1.Image == null || BaseImg == null || aoiControl == null)
{ {
return; return;
} }
...@@ -301,7 +313,7 @@ namespace AccAOI ...@@ -301,7 +313,7 @@ namespace AccAOI
{ {
SaveCurrAoi(); SaveCurrAoi();
CanSel = false; CanSel = false;
if (Img == null) if (BaseImg == null)
{ {
return; return;
} }
...@@ -309,19 +321,28 @@ namespace AccAOI ...@@ -309,19 +321,28 @@ namespace AccAOI
{ {
return; return;
} }
if (TestImage == null)
{
MessageBox.Show("请选择测试图片");
return;
}
Image outImage = null; Image outImage = null;
List<ResultBean> result = Project.CheckAll(Img, out outImage); List<ResultBean> result = Project.CheckAll(TestImage, out outImage);
if (outImage != null) if (outImage != null)
{ {
this.imageBox1.SelectNone(); if (!this.testImageBox1.Visible)
this.imageBox1.Image = outImage; {
btnImageChange_Click(null, null);
}
this.testImageBox1.SelectNone();
this.testImageBox1.Image = outImage;
} }
CanSel = true; CanSel = true;
} }
private void btnDel_Click(object sender, EventArgs e) private void btnDel_Click(object sender, EventArgs e)
{ {
if (Img == null) if (BaseImg == null)
{ {
return; return;
} }
...@@ -342,6 +363,62 @@ namespace AccAOI ...@@ -342,6 +363,62 @@ namespace AccAOI
} }
} }
} }
private void btnImageChange_Click(object sender, EventArgs e)
{
if (testImageBox1.Visible)
{
testImageBox1.Visible = false;
imageBox1.Visible = true;
btnImageChange.Text = "显示测试图片";
lblCurrImage.Text = "基准图:";
lblCurrImage.ForeColor = Color.Green;
}
else
{
testImageBox1.Visible = true;
imageBox1.Visible = false;
btnImageChange.Text = "显示基准图片";
lblCurrImage.Text = "测试/效果图:";
lblCurrImage.ForeColor = Color.Orange;
}
}
private void flatButton2_Click(object sender, EventArgs e)
{
System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog();
openDialog.Title = "打开本地图片";
openDialog.Filter = "All Supported Images (*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png)|*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png|Bitmaps (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|Graphics Interchange Format (*.gif)|*.gif|Joint Photographic Experts (*.jpg)|*.jpg|Portable Network Graphics (*.png)|*.png|All Files (*.*)|*.*";
openDialog.DefaultExt = "png";
//openDialog.DefaultExt = "png";
System.Windows.Forms.DialogResult result = openDialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.Cancel)
{
return;
}
string fileName = openDialog.FileName;
//读取图片内容
TestImage = (Image)Image.FromFile(fileName).Clone();
testImageBox1.Image = TestImage;
if (testImageBox1.Visible.Equals(false))
{
btnImageChange_Click(null, null);
}
}
private void FrmAoiSetting_Shown(object sender, EventArgs e)
{
testImageBox1.Size = imageBox1.Size;
testImageBox1.Location = imageBox1.Location;
testImageBox1.Visible = false;
}
private void flatButton1_Click(object sender, EventArgs e)
{
}
} }
} }
...@@ -27,7 +27,7 @@ namespace AccAOI.control ...@@ -27,7 +27,7 @@ namespace AccAOI.control
protected object UpdateLock = ""; protected object UpdateLock = "";
public Image GetImg() public Image GetImg()
{ {
return FrmAoiSetting.Img; return FrmAoiSetting.BaseImg;
} }
internal bool IsShowOk = false; internal bool IsShowOk = false;
/// <summary> /// <summary>
......
...@@ -56,11 +56,11 @@ namespace AccAOI.control ...@@ -56,11 +56,11 @@ namespace AccAOI.control
} }
if (checkImg == null) if (checkImg == null)
{ {
checkImg = FrmAoiSetting.Img; checkImg = FrmAoiSetting.BaseImg;
} }
DateTime time = DateTime.Now; DateTime time = DateTime.Now;
AoiMarkMethod mark = (AoiMarkMethod)AoiInfo; AoiMarkMethod mark = (AoiMarkMethod)AoiInfo;
Image result= mark.FixImage(FrmAoiSetting.Img, checkImg); Image result= mark.FixImage(FrmAoiSetting.BaseImg, checkImg);
TimeSpan span = DateTime.Now - time; TimeSpan span = DateTime.Now - time;
if (result == null) if (result == null)
{ {
......
...@@ -55,11 +55,11 @@ namespace AccAOI.control ...@@ -55,11 +55,11 @@ namespace AccAOI.control
} }
if (checkImg == null) if (checkImg == null)
{ {
checkImg = FrmAoiSetting.Img; checkImg = FrmAoiSetting.BaseImg;
} }
DateTime time = DateTime.Now; DateTime time = DateTime.Now;
AoiTemplateMethod Match = (AoiTemplateMethod)AoiInfo; AoiTemplateMethod Match = (AoiTemplateMethod)AoiInfo;
ResultBean result= Match.Check(FrmAoiSetting.Img, checkImg); ResultBean result= Match.Check(FrmAoiSetting.BaseImg, checkImg);
TimeSpan span = DateTime.Now - time; TimeSpan span = DateTime.Now - time;
if (result == null) if (result == null)
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!