Commit c00b7345 LN

增加测试效果图显示。

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