using HalconDotNet; using Rs.Framework; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Rs.MotionPlat.Commom { public class ProductModel { public string RecipeName { get; set; } public string ModelName { get; set; } = "test"; /// /// ROI区域 /// public HObject RoiRegion { get; set; } /// /// 移除的区域 /// public HObject RemovedRegion { get; set; } /// /// 最终的模板区域 /// public HObject FinalRegion { get { if(RoiRegion != null && RoiRegion.CountObj()>0) { if (RemovedRegion != null && RemovedRegion.CountObj() > 0) { HOperatorSet.Difference(RoiRegion, RemovedRegion, out HObject diffRegion); return diffRegion; } return RoiRegion; } return null; } } /// /// 模板图片 /// public HObject TemplateImage { get; set; } public HObject SourceImage { get; set; } public int SaveModel() { //保存原图 string dirname = Path.Combine(Environment.CurrentDirectory, "Recipe", "Test"); if(!Directory.Exists(dirname)) { Directory.CreateDirectory(dirname); } if(SourceImage!= null && SourceImage.CountObj()>0) { HOperatorSet.WriteImage(SourceImage, "bmp", 0, dirname + "\\" + ModelName); } else { return -1; } //保存ROI区域 if(RoiRegion!=null && RoiRegion.CountObj()>0) { HOperatorSet.WriteRegion(RoiRegion, dirname + "\\" + ModelName + "_1.reg"); } else { return -1; } if (RemovedRegion != null && RemovedRegion.CountObj() > 0) { //保存Removed区域 HOperatorSet.WriteRegion(RemovedRegion, dirname + "\\" + ModelName + "_2.reg"); } else { return -1; } //保存最后的区域 if (FinalRegion != null && FinalRegion.CountObj() > 0) { //保存Removed区域 HOperatorSet.WriteRegion(FinalRegion, dirname + "\\" + ModelName + "_3.reg"); HOperatorSet.ReduceDomain(SourceImage, FinalRegion, out HObject image); TemplateImage= image; } else { return -1; } if (SourceImage != null && SourceImage.CountObj() > 0) { HOperatorSet.ReduceDomain(SourceImage, RoiRegion, out HObject imageReduaced); //保存 HOperatorSet.WriteImage(imageReduaced, "bmp", 0, dirname + "\\" + ModelName + "_2"); } //保存模板 HOperatorSet.CreateShapeModel(TemplateImage, "auto", AngleTool.Deg2Rad(-10), AngleTool.Deg2Rad(200), "auto", "auto", "use_polarity", 50, "auto", out HTuple modelID); HOperatorSet.GetShapeModelContours(out HObject modelContours, modelID, 1); HOperatorSet.WriteShapeModel(modelID, "Recipe/Test/m.shm"); return 0; } } }