You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.4 KiB
C#
108 lines
3.4 KiB
C#
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";
|
|
|
|
/// <summary>
|
|
/// ROI区域
|
|
/// </summary>
|
|
public HObject RoiRegion { get; set; }
|
|
|
|
/// <summary>
|
|
/// 移除的区域
|
|
/// </summary>
|
|
public HObject RemovedRegion { get; set; }
|
|
|
|
/// <summary>
|
|
/// 最终的模板区域
|
|
/// </summary>
|
|
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;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 模板图片
|
|
/// </summary>
|
|
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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|