1 #region namespace imports
2 using System;
3 using System.Collections;
4 using System.Drawing;
5 using System.IO;
6 using System.Windows.Forms;
7 using Cognex.VisionPro;
8 using Cognex.VisionPro.ToolBlock;
9 using Cognex.VisionPro3D;
10 using System.Collections.Generic;
11 using Cognex.GC.DeepLearning;
12 using ViDi2;
13 #endregion
14
15 public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
16 {
17 #region Private Member Variables
18 private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;
19 #endregion
20
21 /// <summary>
22 /// Called when the parent tool is run.
23 /// Add code here to customize or replace the normal run behavior.
24 /// </summary>
25 /// <param name="message">Sets the Message in the tool's RunStatus.</param>
26 /// <param name="result">Sets the Result in the tool's RunStatus</param>
27 /// <returns>True if the tool should run normally,
28 /// False if GroupRun customizes run behavior</returns>
29 public override bool GroupRun(ref string message, ref CogToolResultConstants result)
30 {
31 // To let the execution stop in this script when a debugger is attached, uncomment the following lines.
32 #if DEBUG
33 if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break();
34 #endif
35
36 // Run each tool using the RunTool function
37 foreach (ICogTool tool in mToolBlock.Tools)
38 {
39 //bool isInitializeWork
40 if (tool.Name == "InitializeTb")
41 {
42 CogToolBlock tb_Initial = (CogToolBlock) tool;
43 if((bool)tb_Initial.Inputs["isDispose"].Value)
44 {
45 if(Cognex.GC.DeepLearning.GlobalParameter.control != null)
46 {
47 Cognex.GC.DeepLearning.Dispose.disposed();
48 GlobalParameter.control = null;
49 }
50
51 return false;
52 }
53 if ((bool) tb_Initial.Inputs["isInitializeWorkSpace"].Value)
54 {
55 //Initialize
56 string WorkspacePath = (string) tb_Initial.Inputs["WorkspacePath"].Value;
57 string StreamName = (string) tb_Initial.Inputs["StreamName"].Value;
58 string ToolName = (string) tb_Initial.Inputs["ToolName"].Value;
59 int Gpu_Index = (int) tb_Initial.Inputs["Gpu_Index"].Value;
60 Cognex.GC.DeepLearning.Initialize.Initial(WorkspacePath, StreamName, Gpu_Index);
61
62 //update parameters
63 CogToolBlock tb_Evaluate = mToolBlock.Tools["EvaluateTB"] as CogToolBlock;
64 while (tb_Evaluate.Inputs.Count > 0)
65 {
66 tb_Evaluate.Inputs.RemoveAt(0);
67 }
68 System.Type type = typeof(Cognex.VisionPro.ICogImage);
69 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("Image", type));
70
71 if (GlobalParameter.stream.Tools[ToolName].Type == ToolType.Blue)
72 {
73 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("tool_name", ToolName));
74 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicScore", true));
75 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("sampling_Density", -1));
76 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("threshold", -1.0));
77 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("precision", -1.0));
78 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thickness", 2));
79 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("fontScale", 1));
80 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveCsvData", true));
81 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("CSVPath", ""));
82 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveImage", true));
83 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageSaveFolder", ""));
84 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageName", ""));
85
86 }
87 if (GlobalParameter.stream.Tools[ToolName].Type == ToolType.BlueRead)
88 {
89 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("tool_name", ToolName));
90 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thickness", 2));
91 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("sampling_Density", -1));
92 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("threshold", -1.0));
93 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicScore", true));
94 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("fontScale", 1));
95 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveCsvData", true));
96 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("CSVPath", ""));
97 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveImage", true));
98 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageSaveFolder", ""));
99 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageName", ""));
100 }
101 if (GlobalParameter.stream.Tools[ToolName].Type == ToolType.Green || GlobalParameter.stream.Tools[ToolName].Type == ToolType.GreenHighDetail)
102 {
103 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("tool_name", ToolName));
104 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("threshold", -1.0));
105 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("fontScale", 1));
106 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thickness", 2));
107 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicScore", true));
108 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicHeatmap", true));
109 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("CSVPath", ""));
110 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveCsvData", true));
111 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveImage", true));
112 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageSaveFolder", ""));
113 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageName", ""));
114 }
115 if (GlobalParameter.stream.Tools[ToolName].Type == ToolType.Red || GlobalParameter.stream.Tools[ToolName].Type == ToolType.RedHighDetail)
116 {
117 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("tool_name", ToolName));
118 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("sampling_Density", -1));
119 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thresholdLow", -1.0));
120 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thresholdUp", -1.0));
121 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("thickness", 2));
122 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("fontScale", 1));
123 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicArea", true));
124 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicBoundingRect", true));
125 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicContours", true));
126 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isGraphicOverlayImage", true));
127 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveCsvData", true));
128 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("CSVPath", ""));
129 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("isSaveImage", true));
130 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageSaveFolder", ""));
131 tb_Evaluate.Inputs.Add(new CogToolBlockTerminal("AnnotationImageName", ""));
132 }
133 }
134 }
135 if (tool.Name == "EvaluateTB")
136 {
137 CogToolBlock tb_Initial = (CogToolBlock) (mToolBlock.Tools["InitializeTb"]);
138 ((CogToolBlock) (mToolBlock.Tools["EvaluateTB"])).Inputs["Image"].Value = mToolBlock.Inputs[0].Value;
139 if (!(bool) tb_Initial.Inputs["isInitializeWorkSpace"].Value)
140 {
141 mToolBlock.RunTool(tool, ref message, ref result);
142 }
143 }
144 }
145 return false;
146 }
147
148 #region When the Current Run Record is Created
149 /// <summary>
150 /// Called when the current record may have changed and is being reconstructed
151 /// </summary>
152 /// <param name="currentRecord">
153 /// The new currentRecord is available to be initialized or customized.</param>
154 public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord)
155 {
156 }
157 #endregion
158
159 #region When the Last Run Record is Created
160 /// <summary>
161 /// Called when the last run record may have changed and is being reconstructed
162 /// </summary>
163 /// <param name="lastRecord">
164 /// The new last run record is available to be initialized or customized.</param>
165 public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord)
166 {
167 }
168 #endregion
169
170 #region When the Script is Initialized
171 /// <summary>
172 /// Perform any initialization required by your script here
173 /// </summary>
174 /// <param name="host">The host tool</param>
175 public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host)
176 {
177 // DO NOT REMOVE - Call the base class implementation first - DO NOT REMOVE
178 base.Initialize(host);
179
180
181 // Store a local copy of the script host
182 this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock) (host));
183 }
184 #endregion
185
186 }
1 #region namespace imports
2 using System;
3 using System.Collections;
4 using System.Drawing;
5 using System.IO;
6 using System.Windows.Forms;
7 using Cognex.VisionPro;
8 using Cognex.VisionPro.ToolBlock;
9 using Cognex.VisionPro3D;
10 using ViDi2;
11 using Cognex.GC.DeepLearning;
12 using System.Collections.Generic;
13 using Cognex.VisionPro.ImageProcessing;
14 #endregion
15
16 public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase
17 {
18 #region Private Member Variables
19 private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock;
20 BlueRead read = new BlueRead();
21 BlueLocate locate = new BlueLocate();
22 GreenClassify green = new GreenClassify();
23 RedAnalyze red = new RedAnalyze();
24 #endregion
25
26 /// <summary>
27 /// Called when the parent tool is run.
28 /// Add code here to customize or replace the normal run behavior.
29 /// </summary>
30 /// <param name="message">Sets the Message in the tool's RunStatus.</param>
31 /// <param name="result">Sets the Result in the tool's RunStatus</param>
32 /// <returns>True if the tool should run normally,
33 /// False if GroupRun customizes run behavior</returns>
34 public override bool GroupRun(ref string message, ref CogToolResultConstants result)
35 {
36 // To let the execution stop in this script when a debugger is attached, uncomment the following lines.
37 #if DEBUG
38 if (System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Break();
39 #endif
40
41
42 // Run each tool using the RunTool function
43 // foreach(ICogTool tool in mToolBlock.Tools)
44 // mToolBlock.RunTool(tool, ref message, ref result);
45
46 //Init tool
47 BlueRead read = new BlueRead();
48 BlueLocate locate = new BlueLocate();
49 GreenClassify green = new GreenClassify();
50 RedAnalyze red = new RedAnalyze();
51
52 //image convert
53 ICogImage cogImage = mToolBlock.Inputs["Image"].Value as ICogImage;
54 IImage iImage = new ViDi2.VisionPro.Image(cogImage);
55 Bitmap bitmap = iImage.Bitmap;
56
57 //remove allResult
58 while(mToolBlock.Outputs.Count > 0)
59 mToolBlock.Outputs.RemoveAt(0);
60
61
62
63 //run tools
64 if (GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.Blue)
65 {
66 List<Tuple<List<double>, List<ViDi2.Point>, List<ViDi2.Rect>, IImage>> listResult = new List<Tuple<List<double>, List<ViDi2.Point>, List<ViDi2.Rect>, IImage>>();
67 locate.EvaluateWithGraphic(iImage,
68 (string) mToolBlock.Inputs["tool_name"].Value,
69 ref listResult,
70 ref bitmap,
71 (bool) mToolBlock.Inputs["isGraphicScore"].Value,
72 (int)mToolBlock.Inputs["sampling_Density"].Value,
73 (float) mToolBlock.Inputs["threshold"].Value,
74 (float) mToolBlock.Inputs["precision"].Value,
75 (int)mToolBlock.Inputs["thickness"].Value,
76 (int)mToolBlock.Inputs["fontScale"].Value,
77 (bool)mToolBlock.Inputs["isSaveCsvData"].Value,
78 (string)mToolBlock.Inputs["CSVPath"].Value,
79 (bool)mToolBlock.Inputs["isSaveImage"].Value,
80 (string)mToolBlock.Inputs["AnnotationImageSaveFolder"].Value,
81 (string)mToolBlock.Inputs["AnnotationImageName"].Value
82 );
83 mToolBlock.Outputs.Add(new CogToolBlockTerminal("ResultData", listResult));
84
85 }
86 if (GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.BlueRead)
87 {
88
89 List<List<Tuple<double, string, List<ViDi2.Point>>>> listResult = new List<List<Tuple<double, string, List<ViDi2.Point>>>>();
90 read.EvaluateWithGraphic(iImage,
91 (string) mToolBlock.Inputs["tool_name"].Value,
92 ref listResult,
93 ref bitmap,
94 (int)mToolBlock.Inputs["thickness"].Value,
95 (int)mToolBlock.Inputs["sampling_Density"].Value,
96 (double) mToolBlock.Inputs["threshold"].Value,
97 (bool) mToolBlock.Inputs["isGraphicScore"].Value,
98 (int)mToolBlock.Inputs["fontScale"].Value,
99 (bool)mToolBlock.Inputs["isSaveCsvData"].Value,
100 (string)mToolBlock.Inputs["CSVPath"].Value,
101 (bool)mToolBlock.Inputs["isSaveImage"].Value,
102 (string)mToolBlock.Inputs["AnnotationImageSaveFolder"].Value,
103 (string)mToolBlock.Inputs["AnnotationImageName"].Value
104 );
105 mToolBlock.Outputs.Add(new CogToolBlockTerminal("ResultData", listResult));
106
107
108 }
109 if (GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.Green || GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.GreenHighDetail)
110 {
111
112 List<Tuple<double, string, IImage>> listResult = new List<Tuple<double, string, IImage>>();
113 green.EvaluateWithGraphicAndResult(iImage,
114 (string) mToolBlock.Inputs["tool_name"].Value,
115 ref bitmap,
116 ref listResult,
117 (double) mToolBlock.Inputs["threshold"].Value,
118 (int)mToolBlock.Inputs["thickness"].Value,
119 (int)mToolBlock.Inputs["fontScale"].Value,
120 (bool) mToolBlock.Inputs["isGraphicScore"].Value,
121 (bool) mToolBlock.Inputs["isGraphicHeatmap"].Value,
122 (string)mToolBlock.Inputs["CSVPath"].Value,
123 (bool)mToolBlock.Inputs["isSaveCsvData"].Value,
124 (bool)mToolBlock.Inputs["isSaveImage"].Value,
125 (string)mToolBlock.Inputs["AnnotationImageSaveFolder"].Value,
126 (string)mToolBlock.Inputs["AnnotationImageName"].Value
127 );
128 mToolBlock.Outputs.Add(new CogToolBlockTerminal("ResultData", listResult));
129
130
131 }
132 if (GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.Red || GlobalParameter.stream.Tools[(string) mToolBlock.Inputs["tool_name"].Value].Type == ToolType.RedHighDetail)
133 {
134 //1.view的分数;2.缺陷的中心点;3.缺陷最小外接矩形的四个角点;4.缺陷的面积;5.缺陷的周长;6.缺陷的轮廓点 7.view image; 8.overlay image;
135 List<Tuple<double, List<ViDi2.Point>, List<ViDi2.Point[]>, List<double>, List<double>, List<ViDi2.Point[]>, Tuple<IImage, IRedView>>> listResult = new List<Tuple<double, List<ViDi2.Point>, List<ViDi2.Point[]>, List<double>, List<double>, List<ViDi2.Point[]>, Tuple<IImage, IRedView>>>();
136 red.EvaluateWithGraphicAndResult(iImage,
137 (string) mToolBlock.Inputs["tool_name"].Value,
138 ref listResult,
139 ref bitmap,
140 (int)mToolBlock.Inputs["sampling_Density"].Value,
141 (double) mToolBlock.Inputs["thresholdLow"].Value,
142 (double) mToolBlock.Inputs["thresholdUp"].Value,
143 (int)mToolBlock.Inputs["thickness"].Value,
144 (int)mToolBlock.Inputs["fontScale"].Value,
145 (bool) mToolBlock.Inputs["isGraphicArea"].Value,
146 (bool) mToolBlock.Inputs["isGraphicBoundingRect"].Value,
147 (bool) mToolBlock.Inputs["isGraphicContours"].Value,
148 (bool) mToolBlock.Inputs["isGraphicOverlayImage"].Value,
149 (bool)mToolBlock.Inputs["isSaveCsvData"].Value,
150 (string)mToolBlock.Inputs["CSVPath"].Value,
151 (bool)mToolBlock.Inputs["isSaveImage"].Value,
152 (string)mToolBlock.Inputs["AnnotationImageSaveFolder"].Value,
153 (string)mToolBlock.Inputs["AnnotationImageName"].Value
154 );
155 mToolBlock.Outputs.Add(new CogToolBlockTerminal("ResultData", listResult));
156 }
157
158 //add RawImage
159 mToolBlock.Outputs.Add(new CogToolBlockTerminal("RawImage", cogImage));
160
161 //AddResultImg
162 Cognex.VisionPro.CogImage24PlanarColor resultImg = new CogImage24PlanarColor(bitmap);
163 mToolBlock.Outputs.Add(new CogToolBlockTerminal("ResultImage", resultImg));
164
165 //Display
166 CogIPOneImageTool RawDisplay = mToolBlock.Tools["RawDisplay"] as CogIPOneImageTool;
167 RawDisplay.InputImage = cogImage;
168 RawDisplay.Run();
169
170 CogIPOneImageTool ResultDisplay = mToolBlock.Tools["ResultDisplay"] as CogIPOneImageTool;
171 ResultDisplay.InputImage = resultImg;
172 ResultDisplay.Run();
173
174
175 return false;
176 }
177
178 #region When the Current Run Record is Created
179 /// <summary>
180 /// Called when the current record may have changed and is being reconstructed
181 /// </summary>
182 /// <param name="currentRecord">
183 /// The new currentRecord is available to be initialized or customized.</param>
184 public override void ModifyCurrentRunRecord(Cognex.VisionPro.ICogRecord currentRecord)
185 {
186 }
187 #endregion
188
189 #region When the Last Run Record is Created
190 /// <summary>
191 /// Called when the last run record may have changed and is being reconstructed
192 /// </summary>
193 /// <param name="lastRecord">
194 /// The new last run record is available to be initialized or customized.</param>
195 public override void ModifyLastRunRecord(Cognex.VisionPro.ICogRecord lastRecord)
196 {
197 }
198 #endregion
199
200 #region When the Script is Initialized
201 /// <summary>
202 /// Perform any initialization required by your script here
203 /// </summary>
204 /// <param name="host">The host tool</param>
205 public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host)
206 {
207 // DO NOT REMOVE - Call the base class implementation first - DO NOT REMOVE
208 base.Initialize(host);
209
210
211 // Store a local copy of the script host
212 this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock) (host));
213
214 }
215 #endregion
216
217 }