using CaliperTool; using CommonMethods; using EyeHandCalibTool; using FindLineTool; using HalconTool; using HDevEngineTool; using PMAlignTool; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VisionJobFactory { [Serializable] [VisionToolAttribute(ToolType.HalconTool)] public class HalconToolInterface : IToolInfo { // 必添加输出项 ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image); /// /// 获取工具的所有信息 /// /// public HalconToolInterface(string toolName) { enable = true; toolType = ToolType.HalconTool; this.toolName = toolName; tool = new HalconTool.HalconTool(); FormTool = null; FormToolName = "HalconTool.FormHalconTool"; toolInput = new List(); toolOutput = new List() { outputImage }; } /// /// 只获取选择工具的描述信息.. /// public HalconToolInterface() { toolDescription = "Halcon采集图像接口,可直接连接网口、USB等相机"; } } [Serializable] [VisionToolAttribute(ToolType.SDKBasler)] public class SDKBaslerInterface : IToolInfo { // 必添加输出项 ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image); /// /// 获取工具的所有信息 /// /// public SDKBaslerInterface(string toolName) { enable = true; toolType = ToolType.HalconTool; this.toolName = toolName; tool = new HalconTool.HalconTool(); FormTool = null; FormToolName = "SDKBaslerTool.FormSDKBaslerTool"; toolInput = new List(); toolOutput = new List() { outputImage }; } /// /// 只获取选择工具的描述信息.. /// public SDKBaslerInterface() { toolDescription = "Basler相机采集图像接口,可直接连接网口、USB等Basler相机"; } } [Serializable] [VisionToolAttribute(ToolType.FindLine)] public class FindLineToolInterface : IToolInfo { ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image); ToolIO inputPos = new ToolIO("InputPos", null, DataType.Pose); ToolIO outputXld = new ToolIO("outputXld", null, DataType.Line); ToolIO startPointRow = new ToolIO("StartPointRow", null, DataType.IntValue); ToolIO startPointColumn = new ToolIO("StartPointColumn", null, DataType.IntValue); ToolIO endPointRow = new ToolIO("EndPointRow", null, DataType.IntValue); ToolIO endPointColumn = new ToolIO("EndPointColumn", null, DataType.IntValue); public FindLineToolInterface(string toolName) { enable = true; toolType = ToolType.FindLine; this.toolName = toolName; tool = new FindLine(); FormToolName = "FindLineTool.FormFindLine"; FormTool = null; toolInput = new List() { inputImage, inputPos }; toolOutput = new List() { outputXld, startPointRow, startPointColumn, endPointRow, endPointColumn }; } /// /// 只获取选择工具的描述信息 /// public FindLineToolInterface() { toolDescription = "找线工具"; } } [Serializable] [VisionToolAttribute(ToolType.Caliper)] public class CaliperInterface : IToolInfo { ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image); ToolIO inputPos = new ToolIO("InputPos", null, DataType.Pose); ToolIO inputCenterRow = new ToolIO("inputCenterRow", null, DataType.IntValue); ToolIO inputCenterColumn = new ToolIO("inputCenterColumn", null, DataType.IntValue); ToolIO inputPhi = new ToolIO("inputPhi", null, DataType.IntValue); ToolIO outputCenterRow = new ToolIO("outputCenterRow", null, DataType.IntValue); ToolIO outputCenterColumn = new ToolIO("outputCenterColumn", null, DataType.IntValue); public CaliperInterface(string toolName) { enable = true; toolType = ToolType.Caliper; this.toolName = toolName; tool = new Caliper(); FormToolName = "CaliperTool.FormCaliper"; FormTool = null; toolInput = new List() { inputImage, inputCenterRow, inputCenterColumn, inputPhi , inputPos }; toolOutput = new List() { outputCenterRow, outputCenterColumn }; } /// /// 只获取选择工具的描述信息 /// public CaliperInterface() { toolDescription = "卡尺工具"; } } [Serializable] [VisionToolAttribute(ToolType.BlobAnalyse)] public class BlobAnalyseToolInterface : IToolInfo { } [Serializable] [VisionToolAttribute(ToolType.HDevEngineTool)] public class HDevEngineToolToolInterface : IToolInfo { ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image); ToolIO inputPos = new ToolIO("InputPos", null, DataType.Pose); ToolIO outObject = new ToolIO("OutObject", null, DataType.Object); public HDevEngineToolToolInterface(string toolName) { enable = true; toolType = ToolType.HDevEngineTool; this.toolName = toolName; tool = new HDevEngineCode(); FormToolName = "HDevEngineTool.FormHDevEngineTool"; FormTool = null; toolInput = new List() { inputImage, inputPos }; toolOutput = new List() { outObject }; } /// /// 只获取选择工具的描述信息 /// public HDevEngineToolToolInterface() { toolDescription = "使用Halcon引擎直接调用Halcon hdev代码"; } } [Serializable] [VisionToolAttribute(ToolType.PMAlignTool)] public class PMAlignToolToolInterface : IToolInfo { ToolIO inputImage = new ToolIO("InputImage", null, DataType.Image); ToolIO outPose = new ToolIO("GetPose", null, DataType.Pose); ToolIO outPoseX = new ToolIO("GetPose.X", null, DataType.IntValue); ToolIO outPoseY = new ToolIO("GetPose.Y", null, DataType.IntValue); ToolIO outPoseR = new ToolIO("GetPose.Z", null, DataType.DoubleValue); ToolIO outPoseScore = new ToolIO("GetPose.Score", null, DataType.DoubleValue); public PMAlignToolToolInterface(string toolName) { enable = true; toolType = ToolType.PMAlignTool; this.toolName = toolName; tool = new PMAlign(); FormToolName = "PMAlignTool.FormPMAlignTool"; FormTool = null; toolInput = new List() { inputImage }; toolOutput = new List() { outPose, outPoseX, outPoseY, outPoseR, outPoseScore }; } /// /// 只获取选择工具的描述信息 /// public PMAlignToolToolInterface() { toolDescription = "模板匹配工具,可得到根据图像捕获特征的姿态"; } } [Serializable] [VisionToolAttribute(ToolType.EyeHandCalib)] public class EyeHandCalibrationInterface : IToolInfo { ToolIO inputPoint = new ToolIO("InputPoint", null, DataType.Point); ToolIO outPose = new ToolIO("GetPose", null, DataType.Pose); ToolIO outPoint = new ToolIO("OutPoint", null, DataType.Point); public EyeHandCalibrationInterface(string toolName) { enable = true; toolType = ToolType.EyeHandCalib; this.toolName = toolName; tool = new EyeHandCalib(); FormToolName = "EyeHandCalibTool.FormEyeHandCalib"; FormTool = null; toolInput = new List { inputPoint }; toolOutput = new List() { outPose,outPoint}; } /// /// 只获取选择工具的描述信息 /// public EyeHandCalibrationInterface() { toolDescription = "手眼标定工具,根据输入的图像坐标和机械坐标可测得姿态"; } } }