| | |
| | | [Node("ç¸æºåå¾", "ååå·¥å
·", "Basic", "ç¸æºåå¾")] |
| | | public void ç¸æºåå¾(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("Halcon2Dæç¹å·¥å
·", "Haclon2Då·¥å
·", "Basic", "Halcon2Dæç¹å·¥å
·")] |
| | | [Node("Halcon2Dæç¹å·¥å
·", "Halcon2Då·¥å
·", "Basic", "Halcon2Dæç¹å·¥å
·")] |
| | | public void Halcon2Dæç¹å·¥å
·(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("é讯模å", "é讯工å
·", "Basic", "é讯模å")] |
| | | public void é讯模å(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("Halcon2Då¾åå¢å¼º", "Halcon2Då·¥å
·", "Basic", "Halcon2Då¾åå¢å¼º")] |
| | | public void Halcon2Då¾åå¢å¼º(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("Halcon2Då¾å滤波", "Halcon2Då·¥å
·", "Basic", "Halcon2Då¾å滤波")] |
| | | public void Halcon2Då¾å滤波(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace LB_SmartVisionCommon |
| | | { |
| | | /// <summary> |
| | | /// è®°å½å¾åå¢å¼ºç®ååæ° |
| | | /// </summary> |
| | | [JsonObject(MemberSerialization.OptOut)] |
| | | [TypeConverter(typeof(PropertySorter))] |
| | | public class RecordFilterData |
| | | { |
| | | /// <summary> |
| | | /// ç®åç±»å |
| | | /// </summary> |
| | | [Category("RecordFilterData"), PropertyOrder(1)] |
| | | [DisplayName("滤波类å")] |
| | | [Browsable(true)] |
| | | public FilterType FilterName { get; set; } = FilterType.å弿»¤æ³¢_MeanImage; |
| | | /// <summary> |
| | | /// æ©è宽度 |
| | | /// </summary> |
| | | [Category("RecordFilterData"), PropertyOrder(2)] |
| | | [DisplayName("æ©è宽度")] |
| | | [Browsable(true)] |
| | | public string MaskWidth { get; set; } |
| | | /// <summary> |
| | | /// æ©èé«åº¦ |
| | | /// </summary> |
| | | [Category("RecordFilterData"), PropertyOrder(3)] |
| | | [DisplayName("æ©èé«åº¦")] |
| | | [Browsable(true)] |
| | | public string MaskHight { get; set; } |
| | | /// <summary> |
| | | /// å¢å¼ºå å |
| | | /// </summary> |
| | | [Category("RecordFilterData"), PropertyOrder(4)] |
| | | [DisplayName("髿¯æ ¸å°ºå¯¸")] |
| | | [Browsable(true)] |
| | | public string GaussSize { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¤å¶ç¨æ·æ°æ® |
| | | /// </summary> |
| | | public RecordFilterData Clone() |
| | | { |
| | | return new RecordFilterData |
| | | { |
| | | MaskWidth = this.MaskWidth, |
| | | MaskHight = this.MaskHight, |
| | | GaussSize = this.GaussSize, |
| | | FilterName = this.FilterName |
| | | }; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// OperatorType |
| | | /// </summary> |
| | | public enum FilterType |
| | | { |
| | | /// <summary> |
| | | /// FilterTypeï¼MeanImage |
| | | /// </summary> |
| | | å弿»¤æ³¢_MeanImage, |
| | | /// <summary> |
| | | /// FilterTypeï¼GaussFilter |
| | | /// </summary> |
| | | 髿¯æ»¤æ³¢_GaussFilter, |
| | | /// <summary> |
| | | /// FilterTypeï¼MedianRect |
| | | /// </summary> |
| | | ä¸å¼æ»¤æ³¢_MedianRect |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace LB_SmartVisionCommon |
| | | { |
| | | public class FilterManager |
| | | { |
| | | private Dictionary<FilterType, RecordFilterData> _filters; |
| | | private readonly string _dataFilePath; |
| | | private RecordFilterData _currentFilter; |
| | | private static FilterManager _instance; |
| | | /// <summary> |
| | | /// 线ç¨é |
| | | /// </summary> |
| | | private static readonly object _lock = new object(); |
| | | private FilterManager(string dataFilePath = "filters.json") |
| | | { |
| | | _dataFilePath = dataFilePath; |
| | | _filters = new Dictionary<FilterType, RecordFilterData>(); |
| | | _currentFilter = null; |
| | | LoadUsers(); |
| | | } |
| | | public static FilterManager Instance |
| | | { |
| | | get |
| | | { |
| | | // å鿣æ¥éå®ç¡®ä¿çº¿ç¨å®å
¨ |
| | | if (_instance == null) |
| | | { |
| | | lock (_lock) |
| | | { |
| | | if (_instance == null) |
| | | { |
| | | _instance = new FilterManager(); |
| | | } |
| | | } |
| | | } |
| | | return _instance; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å æ»¤æ³¢ç®å |
| | | /// </summary> |
| | | /// <param name="user"></param> |
| | | /// <returns></returns> |
| | | public bool AddFilter(RecordFilterData filter) |
| | | { |
| | | if (_currentFilter == null) |
| | | { |
| | | _currentFilter = filter; |
| | | } |
| | | try |
| | | { |
| | | RecordFilterData recordFilterData = new RecordFilterData(); |
| | | recordFilterData.MaskWidth = filter.MaskWidth; |
| | | recordFilterData.MaskHight = filter.MaskHight; |
| | | recordFilterData.GaussSize = filter.GaussSize; |
| | | recordFilterData.FilterName = filter.FilterName; |
| | | _filters.Add(recordFilterData.FilterName, recordFilterData); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show("该ç®åå·²åå¨"); |
| | | } |
| | | SaveUsers(); |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤å¾åå¢å¼ºç®å |
| | | /// </summary> |
| | | /// <param name="filterName"></param> |
| | | /// <returns></returns> |
| | | public bool DeleteUser(RecordFilterData filter) |
| | | { |
| | | try |
| | | { |
| | | // 1. ä»åå
¸ä¸å é¤ |
| | | if (_filters.ContainsKey(filter.FilterName)) |
| | | { |
| | | _filters.Remove(filter.FilterName); |
| | | } |
| | | |
| | | // 2. 妿å é¤çæ¯å½åæ»¤æ³¢ï¼æ¸
空_currentFilter |
| | | if (_currentFilter != null && _currentFilter.FilterName == filter.FilterName) |
| | | { |
| | | _currentFilter = null; |
| | | } |
| | | |
| | | // 3. ä¿åæ´æ¹ |
| | | SaveUsers(); |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // è®°å½æ¥å¿ |
| | | Console.WriteLine($"å 餿»¤æ³¢å¤±è´¥: {ex.Message}"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åææç¨æ·å表 |
| | | /// </summary> |
| | | /// <returns>List<RecordUserData></returns> |
| | | public List<RecordFilterData> GetAllUsers() |
| | | { |
| | | return _filters.Select(u => u.Value.Clone()).ToList(); |
| | | } |
| | | |
| | | #region jsonæä»¶ä¿åå è½½ |
| | | /// <summary> |
| | | /// ä¿åç¨æ·æ°æ®å°JSONæä»¶ |
| | | /// </summary> |
| | | private void SaveUsers() |
| | | { |
| | | try |
| | | { |
| | | ConfigManager<Dictionary<FilterType, RecordFilterData>>.SaveConfig<Dictionary<FilterType, RecordFilterData>>(_filters, _dataFilePath); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show($"ä¿åå¾åå¢å¼ºç®å失败ï¼{ex.Message}", "é误", MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»JSONæä»¶å è½½ç¨æ·æ°æ® |
| | | /// </summary> |
| | | private void LoadUsers() |
| | | { |
| | | try |
| | | { |
| | | if (File.Exists(_dataFilePath)) |
| | | { |
| | | _filters = ConfigManager<Dictionary<FilterType, RecordFilterData>>.LoadConfig<Dictionary<FilterType, RecordFilterData>>(_dataFilePath) ?? new Dictionary<FilterType, RecordFilterData>(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show($"å è½½å¾åå¢å¼ºç®å失败ï¼{ex.Message}", "é误", MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | _filters = new Dictionary<FilterType, RecordFilterData>(); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace LB_SmartVisionCommon |
| | | { |
| | | /// <summary> |
| | | /// è®°å½å¾åå¢å¼ºç®ååæ° |
| | | /// </summary> |
| | | [JsonObject(MemberSerialization.OptOut)] |
| | | [TypeConverter(typeof(PropertySorter))] |
| | | public class RecordImageEnhancementData |
| | | { |
| | | /// <summary> |
| | | /// ç®åç±»å |
| | | /// </summary> |
| | | [Category("RecordImageEnhancementData"), PropertyOrder(1)] |
| | | [DisplayName("ç®åç±»å")] |
| | | [Browsable(true)] |
| | | public ImageEnhancementDataType FilterName { get; set; } = ImageEnhancementDataType.æ¯ä¾å¢å¼º_ScaleImageMax; |
| | | /// <summary> |
| | | /// æ©è宽度 |
| | | /// </summary> |
| | | [Category("RecordImageEnhancementData"), PropertyOrder(2)] |
| | | [DisplayName("æ©è宽度")] |
| | | [Browsable(true)] |
| | | public string MaskWidth { get; set; } |
| | | /// <summary> |
| | | /// æ©èé«åº¦ |
| | | /// </summary> |
| | | [Category("RecordImageEnhancementData"), PropertyOrder(3)] |
| | | [DisplayName("æ©èé«åº¦")] |
| | | [Browsable(true)] |
| | | public string MaskHight { get; set; } |
| | | /// <summary> |
| | | /// å¢å¼ºå å |
| | | /// </summary> |
| | | [Category("RecordImageEnhancementData"), PropertyOrder(4)] |
| | | [DisplayName("å¢å¼ºå å")] |
| | | [Browsable(true)] |
| | | public string Factor { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤å¶ç¨æ·æ°æ® |
| | | /// </summary> |
| | | public RecordImageEnhancementData Clone() |
| | | { |
| | | return new RecordImageEnhancementData |
| | | { |
| | | MaskWidth = this.MaskWidth, |
| | | MaskHight = this.MaskHight, |
| | | Factor = this.Factor, |
| | | FilterName = this.FilterName |
| | | }; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// OperatorType |
| | | /// </summary> |
| | | public enum ImageEnhancementDataType |
| | | { |
| | | /// </summary> |
| | | è¾¹ç¼å¢å¼º_ImageEmphasize, |
| | | |
| | | /// </summary> |
| | | ç´æ¹å¾åè¡¡å_EquHistoImage, |
| | | |
| | | /// </summary> |
| | | æ¯ä¾å¢å¼º_ScaleImageMax |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.VisualBasic.ApplicationServices; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace LB_SmartVisionCommon |
| | | { |
| | | public class ImageEnhancementManager |
| | | { |
| | | private Dictionary<ImageEnhancementDataType, RecordImageEnhancementData> _filters; |
| | | private readonly string _dataFilePath; |
| | | private RecordImageEnhancementData _currentFilter; |
| | | private static ImageEnhancementManager _instance; |
| | | /// <summary> |
| | | /// 线ç¨é |
| | | /// </summary> |
| | | private static readonly object _lock = new object(); |
| | | private ImageEnhancementManager(string dataFilePath = "imageEnhancements.json") |
| | | { |
| | | _dataFilePath = dataFilePath; |
| | | _filters = new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>(); |
| | | _currentFilter = null; |
| | | LoadUsers(); |
| | | } |
| | | public static ImageEnhancementManager Instance |
| | | { |
| | | get |
| | | { |
| | | // å鿣æ¥éå®ç¡®ä¿çº¿ç¨å®å
¨ |
| | | if (_instance == null) |
| | | { |
| | | lock (_lock) |
| | | { |
| | | if (_instance == null) |
| | | { |
| | | _instance = new ImageEnhancementManager(); |
| | | } |
| | | } |
| | | } |
| | | return _instance; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å å¾åå¢å¼ºç®å |
| | | /// </summary> |
| | | /// <param name="user"></param> |
| | | /// <returns></returns> |
| | | public bool AddUser(RecordImageEnhancementData filter) |
| | | { |
| | | if (_currentFilter == null) |
| | | { |
| | | _currentFilter = filter; |
| | | } |
| | | |
| | | try |
| | | { |
| | | RecordImageEnhancementData recordImageEnhancementData = new RecordImageEnhancementData(); |
| | | recordImageEnhancementData.MaskWidth = filter.MaskWidth; |
| | | recordImageEnhancementData.MaskHight = filter.MaskHight; |
| | | recordImageEnhancementData.Factor = filter.Factor; |
| | | recordImageEnhancementData.FilterName = filter.FilterName; |
| | | _filters.Add(recordImageEnhancementData.FilterName, recordImageEnhancementData); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show("该ç®åå·²åå¨"); |
| | | } |
| | | SaveUsers(); |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤å¾åå¢å¼ºç®å |
| | | /// </summary> |
| | | /// <param name="filter"></param> |
| | | /// <returns></returns> |
| | | public bool DeleteUser(RecordImageEnhancementData filter) |
| | | { |
| | | try |
| | | { |
| | | // 1. ä»åå
¸ä¸å é¤ |
| | | if (_filters.ContainsKey(filter.FilterName)) |
| | | { |
| | | _filters.Remove(filter.FilterName); |
| | | } |
| | | |
| | | // 2. 妿å é¤çæ¯å½åæ»¤æ³¢ï¼æ¸
空_currentFilter |
| | | if (_currentFilter != null && _currentFilter.FilterName == filter.FilterName) |
| | | { |
| | | _currentFilter = null; |
| | | } |
| | | |
| | | // 3. ä¿åæ´æ¹ |
| | | SaveUsers(); |
| | | |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // è®°å½æ¥å¿ |
| | | Console.WriteLine($"å 餿»¤æ³¢å¤±è´¥: {ex.Message}"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åææç¨æ·å表 |
| | | /// </summary> |
| | | /// <returns>List<RecordUserData></returns> |
| | | public List<RecordImageEnhancementData> GetAllUsers() |
| | | { |
| | | return _filters.Select(u => u.Value.Clone()).ToList(); |
| | | } |
| | | |
| | | #region jsonæä»¶ä¿åå è½½ |
| | | /// <summary> |
| | | /// ä¿åç¨æ·æ°æ®å°JSONæä»¶ |
| | | /// </summary> |
| | | private void SaveUsers() |
| | | { |
| | | try |
| | | { |
| | | ConfigManager<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>.SaveConfig<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>(_filters, _dataFilePath); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show($"ä¿åå¾åå¢å¼ºç®å失败ï¼{ex.Message}", "é误", MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä»JSONæä»¶å è½½ç¨æ·æ°æ® |
| | | /// </summary> |
| | | private void LoadUsers() |
| | | { |
| | | try |
| | | { |
| | | if (File.Exists(_dataFilePath)) |
| | | { |
| | | _filters = ConfigManager<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>.LoadConfig<Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>>(_dataFilePath) ?? new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show($"å è½½å¾åå¢å¼ºç®å失败ï¼{ex.Message}", "é误", MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | _filters = new Dictionary<ImageEnhancementDataType, RecordImageEnhancementData>(); |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | [Node("ç¸æºåå¾", "ååå·¥å
·", "Basic", "ç¸æºåå¾")] |
| | | public void ç¸æºåå¾(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("Halcon2Dæç¹å·¥å
·", "Haclon2Då·¥å
·", "Basic", "Halcon2Dæç¹å·¥å
·")] |
| | | [Node("Halcon2Dæç¹å·¥å
·", "Halcon2Då·¥å
·", "Basic", "Halcon2Dæç¹å·¥å
·")] |
| | | public void Halcon2Dæç¹å·¥å
·(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("é讯模å", "é讯模åå·¥å
·", "Basic", "é讯模å")] |
| | | public void é讯模å(FlowNode node) { RunNodeAsync(node); } |
| | | // [Process("Halconå¾åå¢å¼º", Category = "Halcon2Då·¥å
·", Description = "å建å¾åå¢å¼ºå·¥å
·")] |
| | | |
| | | [Node("Halcon2Då¾åå¢å¼º", "Halcon2Då·¥å
·", "Basic", "Halcon2Då¾åå¢å¼º")] |
| | | public void Halcon2Då¾åå¢å¼º(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | [Node("Halcon2Då¾å滤波", "Halcon2Då·¥å
·", "Basic", "Halcon2Då¾å滤波")] |
| | | public void Halcon2Då¾å滤波(FlowNode node) { RunNodeAsync(node); } |
| | | |
| | | #endregion |
| | | |
| | |
| | | /// å¾åå¢å¼ºç®æ³-è¾¹ç¼å¢å¼º |
| | | /// </summary> |
| | | /// <param name="ho_Image">å¾
æµå¾ç</param> |
| | | /// <param name="hv_ImageEnhancementType">滤波å¨ç±»å(mean/gauss/median)</param> |
| | | /// <param name="hv_Wid">æ©è宽</param> |
| | | /// <param name="hv_High">æ©èé«</param> |
| | | /// <param name="hv_Fac">å¢å¼ºå å</param> |
| | | /// <param name="hv_Row1">èµ·å§çºµåæ </param> |
| | | /// <param name="hv_Column1">èµ·å§æ¨ªåæ </param> |
| | | /// <param name="hv_Row2">ç»æçºµåæ </param> |
| | | /// <param name="hv_Column2">ç»ææ¨ªåæ </param> |
| | | public static void ImageEnhancement(HObject ho_Image, out HObject ho_OutImage, HTuple hv_ImageEnhancementType, HTuple hv_Wid, HTuple hv_High, HTuple hv_Fac) |
| | | |
| | | public static void ImageEnhancement(HObject ho_Image, out HObject ho_OutImage, string hv_ImageEnhancementType, int hv_Wid, int hv_High, double hv_Fac) |
| | | { |
| | | HOperatorSet.GenEmptyObj(out ho_OutImage); |
| | | |
| | | try |
| | | { |
| | | HTuple hv_ImageEnhancementTypeOut = new HTuple(); |
| | | hv_ImageEnhancementTypeOut.Dispose(); |
| | | hv_ImageEnhancementTypeOut = new HTuple(hv_ImageEnhancementType); |
| | | // æ ¹æ®æ»¤æ³¢å¨ç±»åæ§è¡ç¸åºæä½ |
| | | switch (hv_ImageEnhancementType.ToLower()) |
| | | { |
| | | case "emphasize": |
| | | HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac); |
| | | break; |
| | | |
| | | hv_Wid.Dispose(); |
| | | hv_High.Dispose(); |
| | | ho_OutImage.Dispose(); |
| | | case "scaleimagemax": |
| | | HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage); |
| | | break; |
| | | |
| | | //设置å¾åå¢å¼ºç®æ³ |
| | | if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("emphasize"))) != 0) |
| | | { |
| | | hv_ImageEnhancementTypeOut.Dispose(); |
| | | hv_ImageEnhancementTypeOut = "emphasize"; |
| | | HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac); |
| | | case "equhisto": |
| | | HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage); |
| | | break; |
| | | |
| | | default: |
| | | throw new ArgumentException($"䏿¯æç滤波å¨ç±»å: {hv_ImageEnhancementType}"); |
| | | } |
| | | else if ((int)(new HTuple(hv_ImageEnhancementTypeOut.TupleEqual("equHisto"))) != 0) |
| | | { |
| | | hv_ImageEnhancementTypeOut.Dispose(); |
| | | hv_ImageEnhancementTypeOut = "equHisto"; |
| | | HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage); |
| | | } |
| | | else |
| | | { |
| | | hv_ImageEnhancementTypeOut.Dispose(); |
| | | hv_ImageEnhancementTypeOut = "scaleMax"; |
| | | HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage); |
| | | } |
| | | return; |
| | | } |
| | | catch (HalconException HDevExpDefaultException) |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | hv_Wid.Dispose(); |
| | | hv_High.Dispose(); |
| | | |
| | | throw HDevExpDefaultException; |
| | | // ç¡®ä¿å¼å¸¸æ¶éæ¾èµæº |
| | | ho_OutImage?.Dispose(); |
| | | throw new Exception($"å¾å滤波失败: {ex.Message}", ex); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¾å滤波 |
| | | /// </summary> |
| | | /// <param name="ho_Image">å¾
æµå¾ç</param> |
| | | /// <param name="ho_OutImage">è¾åºå¾ç</param> |
| | | /// <param name="hv_FilterType">滤波å¨ç±»å(mean/gauss/median)</param> |
| | | /// <param name="hv_Wid">æ©è宽</param> |
| | | /// <param name="hv_High">æ©èé«</param> |
| | | /// <param name="hv_Size">髿¯æ ¸å°ºå¯¸</param> |
| | | public static void Filter(HObject ho_Image, out HObject ho_OutImage, string hv_FilterType, int hv_Wid, int hv_High, int hv_Size) |
| | | { |
| | | // åå§åè¾åºå¯¹è±¡ |
| | | HOperatorSet.GenEmptyObj(out ho_OutImage); |
| | | |
| | | try |
| | | { |
| | | // æ ¹æ®æ»¤æ³¢å¨ç±»åæ§è¡ç¸åºæä½ |
| | | switch (hv_FilterType.ToLower()) |
| | | { |
| | | case "mean": |
| | | HOperatorSet.MeanImage(ho_Image, out ho_OutImage, hv_Wid, hv_High); |
| | | break; |
| | | |
| | | case "gauss": |
| | | case "guass": // å
¼å®¹æ¼åé误 |
| | | HOperatorSet.GaussFilter(ho_Image, out ho_OutImage, hv_Size); |
| | | break; |
| | | |
| | | case "median": |
| | | HOperatorSet.MedianRect(ho_Image, out ho_OutImage, hv_Wid, hv_High); |
| | | break; |
| | | |
| | | default: |
| | | throw new ArgumentException($"䏿¯æç滤波å¨ç±»å: {hv_FilterType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // ç¡®ä¿å¼å¸¸æ¶éæ¾èµæº |
| | | ho_OutImage?.Dispose(); |
| | | throw new Exception($"å¾å滤波失败: {ex.Message}", ex); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å¡å°ºç®æ³ |
| | | /// </summary> |
| | |
| | | foreach (string value in IProcess.dicFixtures.Keys) |
| | | cmbFixture.Items.Add(value.ToString()); |
| | | |
| | | ckbDrawRoi.Checked = true; |
| | | cmbTypeRoi.Text = RoiType.None.ToString(); |
| | | LoadParas(); |
| | | |
| | |
| | | |
| | | public override void btnSaveParas_Click(object sender, EventArgs e) { base.btnSaveParas_Click(sender, e); } |
| | | |
| | | |
| | | public override void ckbDrawRoi_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | if (ckbDrawRoi.Checked) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using HalconDotNet; |
| | | using LB_SmartVisionCommon; |
| | | using LB_VisionControl; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Drawing.Imaging; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace LB_VisionProcesses.Alogrithms.Halcon |
| | | { |
| | | public enum ImageFilterType { Mean, Guass, Median } |
| | | |
| | | [Process("Halcon2Då¾å滤波", Category = "Halcon2Då·¥å
·", Description = "å建滤波工å
·")] |
| | | public class HFilterTool : TAlgorithm |
| | | { |
| | | public HFilterTool() |
| | | { |
| | | strProcessClass = "LB_VisionProcesses.Alogrithms.Halcon.HFilterTool"; |
| | | strProcessName = "Halcon2Då¾å滤波工å
·"; |
| | | |
| | | Params.Inputs.Add("滤波å¨ç±»å", "å弿»¤æ³¢"); |
| | | Params.Inputs.Add("æ©è宽", 1); |
| | | Params.Inputs.Add("æ©èé«", 1); |
| | | //mean_image(Image : ImageMean : MaskWidth, MaskHeight : ) |
| | | |
| | | Params.Inputs.Add("滤波å¨ç±»å", "髿¯æ»¤æ³¢"); |
| | | Params.Inputs.Add("髿¯æ ¸å°ºå¯¸", 1.0); |
| | | //gauss_filter(Image : ImageGauss : Size : ) |
| | | |
| | | Params.Inputs.Add("滤波å¨ç±»å", "ä¸å¼æ»¤æ³¢"); |
| | | Params.Inputs.Add("æ©è宽", 1); |
| | | Params.Inputs.Add("æ©èé«", 1); |
| | | //median_rect(Image : ImageMedian :MaskWidth,MaskHeight:) |
| | | |
| | | Params.ROI = new HSegment(0, 0, 250, 250); |
| | | } |
| | | |
| | | List<RecordFilterData> recordFilterDatas = new List<RecordFilterData>(); |
| | | /// <summary> |
| | | /// ç®åé»è¾ |
| | | /// </summary> |
| | | public override void TAlgorithmMain() |
| | | { |
| | | #region åå§ååé |
| | | HObject ho_Regions, ho_LineXld; |
| | | HOperatorSet.GenEmptyObj(out ho_Regions); |
| | | HOperatorSet.GenEmptyObj(out ho_LineXld); |
| | | #endregion |
| | | |
| | | try |
| | | { |
| | | if (InputImage == null) |
| | | { |
| | | Msg = "è¾å
¥å¾ç为空"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | if (InputImage is Bitmap) |
| | | { |
| | | try |
| | | { |
| | | using (HImage hImage = new HImage()) |
| | | { |
| | | Bitmap bitmap = (Bitmap)InputImage; |
| | | Rectangle rect = new Rectangle(0, 0, ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height); |
| | | BitmapData srcBmpData = ((Bitmap)bitmap).LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb); |
| | | hImage.GenImageInterleaved(srcBmpData.Scan0, "rgbx", ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height, 0, "byte", ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height, 0, 0, -1, 0); |
| | | ((Bitmap)bitmap).UnlockBits(srcBmpData); |
| | | bitmap.Dispose(); |
| | | bitmap = null; |
| | | InputImage = null; |
| | | InputImage = hImage.Clone(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | } |
| | | if (!(InputImage is HObject)) |
| | | { |
| | | Msg = "è¾å
¥å¾çæ ¼å¼ä¸ä¸ºHObject"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | #region è£åªåºå |
| | | //if (!(Params.ROI is HSegment)) |
| | | //{ |
| | | // Msg = "ROIç±»åé误,å¿
须为HSegmentç±»å"; |
| | | // Result = false; |
| | | // return; |
| | | //} |
| | | |
| | | //if (!(InputImage is HObject)) |
| | | //{ |
| | | // Msg = "è¾å
¥å¾çç±»åé误,å¿
须为HObjectç±»å"; |
| | | // Result = false; |
| | | // return; |
| | | //} |
| | | |
| | | //HObject DomainImage = ((HObject)InputImage)?.CopyObj(1, -1); |
| | | object DomainImage = null; |
| | | if (!ReduceDomainImage(InputImage, ref DomainImage)) |
| | | { |
| | | Msg = "è£åªåºå失败"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | #endregion |
| | | |
| | | #region ç®åé»è¾ |
| | | Record = new ObjectRecord(); |
| | | HObject hoDomainImage = DomainImage as HObject; |
| | | HTuple hv_Channels = new HTuple(); |
| | | //夿æ¯å¦ä¸ºç°åº¦å¾ |
| | | using (HDevDisposeHelper dh = new HDevDisposeHelper()) |
| | | { |
| | | try |
| | | { |
| | | HOperatorSet.CountChannels(hoDomainImage, out hv_Channels); |
| | | if (hv_Channels.TupleInt() != 1) |
| | | HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage); |
| | | |
| | | //转æ¢å忬¡æ£æ¥æ¯å¦ä¸ºç°åº¦å¾ |
| | | HOperatorSet.CountChannels(hoDomainImage, out hv_Channels); |
| | | if (hv_Channels.TupleInt() != 1) |
| | | { |
| | | HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage); |
| | | Msg = "è¾å
¥å¾çä¸ä¸ºç°åº¦å¾"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | } |
| | | catch |
| | | { |
| | | Msg = "è¾å
¥å¾çä¸ä¸ºç°åº¦å¾ä¸è½¬æ¢å¤±è´¥"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | } |
| | | |
| | | int hv_MaskWidth = Convert.ToInt16(Params.Inputs["æ©è宽"]); |
| | | int hv_MaskHight = Convert.ToInt16(Params.Inputs["æ©èé«"]); |
| | | int hv_Size = Convert.ToInt16(Params.Inputs["髿¯æ ¸å°ºå¯¸"]); |
| | | |
| | | recordFilterDatas = FilterManager.Instance.GetAllUsers(); |
| | | |
| | | string hv_FilterType = ""; |
| | | foreach (var recordFilterData in recordFilterDatas) |
| | | { |
| | | switch (recordFilterData.FilterName) |
| | | { |
| | | case FilterType.å弿»¤æ³¢_MeanImage: |
| | | hv_FilterType = "mean"; |
| | | hv_MaskWidth = Convert.ToInt16(recordFilterData.MaskWidth); |
| | | hv_MaskHight = Convert.ToInt16(recordFilterData.MaskHight); |
| | | Filter(hoDomainImage, out ho_Regions, hv_FilterType, hv_MaskWidth, hv_MaskHight, hv_Size); |
| | | break; |
| | | case FilterType.髿¯æ»¤æ³¢_GaussFilter: |
| | | hv_FilterType = "gauss"; |
| | | hv_Size = Convert.ToInt16(recordFilterData.GaussSize); |
| | | Filter(hoDomainImage, out ho_Regions, hv_FilterType, hv_MaskWidth, hv_MaskHight, hv_Size); |
| | | break; |
| | | case FilterType.ä¸å¼æ»¤æ³¢_MedianRect: |
| | | hv_FilterType = "median"; |
| | | hv_MaskWidth = Convert.ToInt16(recordFilterData.MaskWidth); |
| | | hv_MaskHight = Convert.ToInt16(recordFilterData.MaskHight); |
| | | Filter(hoDomainImage, out ho_Regions, hv_FilterType, hv_MaskWidth, hv_MaskHight, hv_Size); |
| | | break; |
| | | default: |
| | | hv_FilterType = "median"; |
| | | hv_MaskWidth = Convert.ToInt16(recordFilterData.MaskWidth); |
| | | hv_MaskHight = Convert.ToInt16(recordFilterData.MaskHight); |
| | | Filter(hoDomainImage, out ho_Regions, hv_FilterType, hv_MaskWidth, hv_MaskHight, hv_Size); |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region çæOutputImageç»åç»å¤ç |
| | | try |
| | | { |
| | | OutputImage = hoDomainImage; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Msg = "çæOutputImage失败,åå æ¯:" + ex.ToString(); |
| | | Result = false; |
| | | return; |
| | | } |
| | | #endregion |
| | | |
| | | if (Msg == "è¿è¡è¶
æ¶") |
| | | { |
| | | Result = false; |
| | | return; |
| | | } |
| | | |
| | | Msg = "è¿è¡æå"; |
| | | Result = true; |
| | | return; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Msg = "è¿è¡å¤±è´¥,åå æ¯:" + ex.ToString().TrimEnd(); |
| | | OutputImage = null; |
| | | Result = false; |
| | | return; |
| | | } |
| | | finally |
| | | { |
| | | if (!Result) |
| | | { |
| | | Params.Outputs.Add("Segment", new HSegment()); |
| | | } |
| | | |
| | | bCompleted = true; |
| | | #region å
åéæ¾ |
| | | ho_Regions.Dispose(); |
| | | #endregion |
| | | } |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace LB_VisionProcesses.Alogrithms.Halcon |
| | | { |
| | | partial class HFilterToolEdit |
| | | { |
| | | /// <summary> |
| | | /// å¿
éç设计å¨åéã |
| | | /// </summary> |
| | | private System.ComponentModel.IContainer components = null; |
| | | |
| | | /// <summary> |
| | | /// æ¸
çæææ£å¨ä½¿ç¨çèµæºã |
| | | /// </summary> |
| | | /// <param name="disposing">妿åºéæ¾æç®¡èµæºï¼ä¸º trueï¼å¦å为 falseã</param> |
| | | protected override void Dispose(bool disposing) |
| | | { |
| | | if (disposing && (components != null)) |
| | | { |
| | | components.Dispose(); |
| | | } |
| | | base.Dispose(disposing); |
| | | } |
| | | |
| | | #region ç»ä»¶è®¾è®¡å¨çæç代ç |
| | | |
| | | /// <summary> |
| | | /// è®¾è®¡å¨æ¯ææéçæ¹æ³ - ä¸è¦ä¿®æ¹ |
| | | /// 使ç¨ä»£ç ç¼è¾å¨ä¿®æ¹æ¤æ¹æ³çå
容ã |
| | | /// </summary> |
| | | private void InitializeComponent() |
| | | { |
| | | pnlInputImage = new Panel(); |
| | | TopToolStrip = new ToolStrip(); |
| | | btnRun = new ToolStripButton(); |
| | | btnLoadImage = new ToolStripButton(); |
| | | btnSaveParas = new ToolStripButton(); |
| | | btnLoadParas = new ToolStripButton(); |
| | | BtmStatusStrip = new StatusStrip(); |
| | | lblResult = new ToolStripStatusLabel(); |
| | | lblMsg = new ToolStripStatusLabel(); |
| | | lblRunTime = new ToolStripStatusLabel(); |
| | | MainTableLayoutPanel = new TableLayoutPanel(); |
| | | parasTabControl = new TabControl(); |
| | | tabPage1 = new TabPage(); |
| | | tableLayoutPanel1 = new TableLayoutPanel(); |
| | | dataGridViewFi = new DataGridView(); |
| | | tableLayoutPanel4 = new TableLayoutPanel(); |
| | | tableLayoutPanel6 = new TableLayoutPanel(); |
| | | txtGuassSize = new TextBox(); |
| | | labelGuassSize = new Label(); |
| | | tableLayoutPanel3 = new TableLayoutPanel(); |
| | | cmbFilterType = new ComboBox(); |
| | | btnAdd = new Button(); |
| | | labelFilterType = new Label(); |
| | | btnDel = new Button(); |
| | | tableLayoutPanel5 = new TableLayoutPanel(); |
| | | labelMaskWidth = new Label(); |
| | | labelMaskHeight = new Label(); |
| | | txtMaskWidth = new TextBox(); |
| | | txtMaskHeight = new TextBox(); |
| | | tabPage5 = new TabPage(); |
| | | tableLayoutPanel2 = new TableLayoutPanel(); |
| | | cmbTypeRoi = new ComboBox(); |
| | | label21 = new Label(); |
| | | label22 = new Label(); |
| | | cmbFixture = new ComboBox(); |
| | | ckbDrawRoi = new CheckBox(); |
| | | imgTabControl = new TabControl(); |
| | | tabPageInputImage = new TabPage(); |
| | | tabPageRecordImage = new TabPage(); |
| | | pnlRecordImage = new Panel(); |
| | | TopToolStrip.SuspendLayout(); |
| | | BtmStatusStrip.SuspendLayout(); |
| | | MainTableLayoutPanel.SuspendLayout(); |
| | | parasTabControl.SuspendLayout(); |
| | | tabPage1.SuspendLayout(); |
| | | tableLayoutPanel1.SuspendLayout(); |
| | | ((System.ComponentModel.ISupportInitialize)dataGridViewFi).BeginInit(); |
| | | tableLayoutPanel4.SuspendLayout(); |
| | | tableLayoutPanel6.SuspendLayout(); |
| | | tableLayoutPanel3.SuspendLayout(); |
| | | tableLayoutPanel5.SuspendLayout(); |
| | | tabPage5.SuspendLayout(); |
| | | tableLayoutPanel2.SuspendLayout(); |
| | | imgTabControl.SuspendLayout(); |
| | | tabPageInputImage.SuspendLayout(); |
| | | tabPageRecordImage.SuspendLayout(); |
| | | SuspendLayout(); |
| | | // |
| | | // pnlInputImage |
| | | // |
| | | pnlInputImage.Dock = DockStyle.Fill; |
| | | pnlInputImage.Location = new Point(4, 4); |
| | | pnlInputImage.Margin = new Padding(5); |
| | | pnlInputImage.Name = "pnlInputImage"; |
| | | pnlInputImage.Size = new Size(782, 603); |
| | | pnlInputImage.TabIndex = 44; |
| | | // |
| | | // TopToolStrip |
| | | // |
| | | TopToolStrip.ImageScalingSize = new Size(20, 20); |
| | | TopToolStrip.Items.AddRange(new ToolStripItem[] { btnRun, btnLoadImage, btnSaveParas, btnLoadParas }); |
| | | TopToolStrip.Location = new Point(0, 0); |
| | | TopToolStrip.Name = "TopToolStrip"; |
| | | TopToolStrip.Size = new Size(1342, 27); |
| | | TopToolStrip.TabIndex = 45; |
| | | TopToolStrip.Text = "toolStrip1"; |
| | | // |
| | | // btnRun |
| | | // |
| | | btnRun.BackgroundImageLayout = ImageLayout.Zoom; |
| | | btnRun.ImageTransparentColor = Color.Magenta; |
| | | btnRun.Name = "btnRun"; |
| | | btnRun.Size = new Size(43, 24); |
| | | btnRun.Text = "è¿è¡"; |
| | | btnRun.Click += btnRun_Click; |
| | | // |
| | | // btnLoadImage |
| | | // |
| | | btnLoadImage.ImageTransparentColor = Color.Magenta; |
| | | btnLoadImage.Name = "btnLoadImage"; |
| | | btnLoadImage.Size = new Size(43, 24); |
| | | btnLoadImage.Text = "导å¾"; |
| | | btnLoadImage.Click += btnLoadImage_Click; |
| | | // |
| | | // btnSaveParas |
| | | // |
| | | btnSaveParas.ImageTransparentColor = Color.Magenta; |
| | | btnSaveParas.Name = "btnSaveParas"; |
| | | btnSaveParas.Size = new Size(43, 24); |
| | | btnSaveParas.Text = "ä¿å"; |
| | | btnSaveParas.Click += btnSaveParas_Click; |
| | | // |
| | | // btnLoadParas |
| | | // |
| | | btnLoadParas.ImageTransparentColor = Color.Magenta; |
| | | btnLoadParas.Name = "btnLoadParas"; |
| | | btnLoadParas.Size = new Size(43, 24); |
| | | btnLoadParas.Text = "å è½½"; |
| | | // |
| | | // BtmStatusStrip |
| | | // |
| | | BtmStatusStrip.ImageScalingSize = new Size(20, 20); |
| | | BtmStatusStrip.Items.AddRange(new ToolStripItem[] { lblResult, lblMsg, lblRunTime }); |
| | | BtmStatusStrip.Location = new Point(0, 679); |
| | | BtmStatusStrip.Name = "BtmStatusStrip"; |
| | | BtmStatusStrip.Padding = new Padding(1, 0, 18, 0); |
| | | BtmStatusStrip.Size = new Size(1342, 26); |
| | | BtmStatusStrip.TabIndex = 46; |
| | | BtmStatusStrip.Text = "statusStrip1"; |
| | | // |
| | | // lblResult |
| | | // |
| | | lblResult.Name = "lblResult"; |
| | | lblResult.Size = new Size(42, 20); |
| | | lblResult.Text = "True"; |
| | | // |
| | | // lblMsg |
| | | // |
| | | lblMsg.Name = "lblMsg"; |
| | | lblMsg.Size = new Size(69, 20); |
| | | lblMsg.Text = "è¿è¡æå"; |
| | | // |
| | | // lblRunTime |
| | | // |
| | | lblRunTime.Name = "lblRunTime"; |
| | | lblRunTime.Size = new Size(39, 20); |
| | | lblRunTime.Text = "0ms"; |
| | | // |
| | | // MainTableLayoutPanel |
| | | // |
| | | MainTableLayoutPanel.ColumnCount = 2; |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F)); |
| | | MainTableLayoutPanel.Controls.Add(parasTabControl, 0, 0); |
| | | MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0); |
| | | MainTableLayoutPanel.Dock = DockStyle.Fill; |
| | | MainTableLayoutPanel.Location = new Point(0, 27); |
| | | MainTableLayoutPanel.Margin = new Padding(4); |
| | | MainTableLayoutPanel.Name = "MainTableLayoutPanel"; |
| | | MainTableLayoutPanel.RowCount = 1; |
| | | MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | MainTableLayoutPanel.Size = new Size(1342, 652); |
| | | MainTableLayoutPanel.TabIndex = 47; |
| | | // |
| | | // parasTabControl |
| | | // |
| | | parasTabControl.Controls.Add(tabPage1); |
| | | parasTabControl.Controls.Add(tabPage5); |
| | | parasTabControl.Dock = DockStyle.Fill; |
| | | parasTabControl.Location = new Point(4, 4); |
| | | parasTabControl.Margin = new Padding(4); |
| | | parasTabControl.Name = "parasTabControl"; |
| | | parasTabControl.SelectedIndex = 0; |
| | | parasTabControl.Size = new Size(528, 644); |
| | | parasTabControl.TabIndex = 48; |
| | | // |
| | | // tabPage1 |
| | | // |
| | | tabPage1.Controls.Add(tableLayoutPanel1); |
| | | tabPage1.Location = new Point(4, 29); |
| | | tabPage1.Margin = new Padding(4); |
| | | tabPage1.Name = "tabPage1"; |
| | | tabPage1.Padding = new Padding(4); |
| | | tabPage1.Size = new Size(520, 611); |
| | | tabPage1.TabIndex = 0; |
| | | tabPage1.Text = "è¾å
¥åæ°"; |
| | | tabPage1.UseVisualStyleBackColor = true; |
| | | // |
| | | // tableLayoutPanel1 |
| | | // |
| | | tableLayoutPanel1.ColumnCount = 1; |
| | | tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel1.Controls.Add(dataGridViewFi, 0, 1); |
| | | tableLayoutPanel1.Controls.Add(tableLayoutPanel4, 0, 0); |
| | | tableLayoutPanel1.Dock = DockStyle.Fill; |
| | | tableLayoutPanel1.Location = new Point(4, 4); |
| | | tableLayoutPanel1.Name = "tableLayoutPanel1"; |
| | | tableLayoutPanel1.RowCount = 2; |
| | | tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 135F)); |
| | | tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel1.Size = new Size(512, 603); |
| | | tableLayoutPanel1.TabIndex = 1; |
| | | // |
| | | // dataGridViewFi |
| | | // |
| | | dataGridViewFi.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; |
| | | dataGridViewFi.Location = new Point(3, 138); |
| | | dataGridViewFi.Name = "dataGridViewFi"; |
| | | dataGridViewFi.RowHeadersWidth = 51; |
| | | dataGridViewFi.Size = new Size(506, 462); |
| | | dataGridViewFi.TabIndex = 2; |
| | | // |
| | | // tableLayoutPanel4 |
| | | // |
| | | tableLayoutPanel4.ColumnCount = 1; |
| | | tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 506F)); |
| | | tableLayoutPanel4.Controls.Add(tableLayoutPanel6, 0, 2); |
| | | tableLayoutPanel4.Controls.Add(tableLayoutPanel3, 0, 0); |
| | | tableLayoutPanel4.Controls.Add(tableLayoutPanel5, 0, 1); |
| | | tableLayoutPanel4.Location = new Point(3, 3); |
| | | tableLayoutPanel4.Name = "tableLayoutPanel4"; |
| | | tableLayoutPanel4.RowCount = 3; |
| | | tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); |
| | | tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); |
| | | tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); |
| | | tableLayoutPanel4.Size = new Size(506, 125); |
| | | tableLayoutPanel4.TabIndex = 3; |
| | | // |
| | | // tableLayoutPanel6 |
| | | // |
| | | tableLayoutPanel6.ColumnCount = 4; |
| | | tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F)); |
| | | tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel6.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F)); |
| | | tableLayoutPanel6.Controls.Add(txtGuassSize, 1, 0); |
| | | tableLayoutPanel6.Controls.Add(labelGuassSize, 0, 0); |
| | | tableLayoutPanel6.Dock = DockStyle.Fill; |
| | | tableLayoutPanel6.Location = new Point(3, 93); |
| | | tableLayoutPanel6.Name = "tableLayoutPanel6"; |
| | | tableLayoutPanel6.RowCount = 1; |
| | | tableLayoutPanel6.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel6.Size = new Size(500, 39); |
| | | tableLayoutPanel6.TabIndex = 2; |
| | | // |
| | | // txtGuassSize |
| | | // |
| | | txtGuassSize.Location = new Point(88, 3); |
| | | txtGuassSize.Name = "txtGuassSize"; |
| | | txtGuassSize.Size = new Size(159, 27); |
| | | txtGuassSize.TabIndex = 4; |
| | | // |
| | | // labelGuassSize |
| | | // |
| | | labelGuassSize.AutoSize = true; |
| | | labelGuassSize.Location = new Point(3, 0); |
| | | labelGuassSize.Name = "labelGuassSize"; |
| | | labelGuassSize.Size = new Size(69, 39); |
| | | labelGuassSize.TabIndex = 1; |
| | | labelGuassSize.Text = "髿¯æ ¸å°ºå¯¸"; |
| | | // |
| | | // tableLayoutPanel3 |
| | | // |
| | | tableLayoutPanel3.ColumnCount = 4; |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel3.Controls.Add(cmbFilterType, 1, 0); |
| | | tableLayoutPanel3.Controls.Add(btnAdd, 2, 0); |
| | | tableLayoutPanel3.Controls.Add(labelFilterType, 0, 0); |
| | | tableLayoutPanel3.Controls.Add(btnDel, 3, 0); |
| | | tableLayoutPanel3.Dock = DockStyle.Fill; |
| | | tableLayoutPanel3.Location = new Point(3, 3); |
| | | tableLayoutPanel3.Name = "tableLayoutPanel3"; |
| | | tableLayoutPanel3.RowCount = 1; |
| | | tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel3.Size = new Size(500, 39); |
| | | tableLayoutPanel3.TabIndex = 0; |
| | | // |
| | | // cmbFilterType |
| | | // |
| | | cmbFilterType.FormattingEnabled = true; |
| | | cmbFilterType.Location = new Point(89, 4); |
| | | cmbFilterType.Margin = new Padding(4); |
| | | cmbFilterType.Name = "cmbFilterType"; |
| | | cmbFilterType.Size = new Size(157, 28); |
| | | cmbFilterType.TabIndex = 14; |
| | | cmbFilterType.SelectedIndexChanged += cmbFilterType_SelectedIndexChanged; |
| | | // |
| | | // btnAdd |
| | | // |
| | | btnAdd.Location = new Point(253, 3); |
| | | btnAdd.Name = "btnAdd"; |
| | | btnAdd.Size = new Size(119, 33); |
| | | btnAdd.TabIndex = 15; |
| | | btnAdd.Text = "æ·»å "; |
| | | btnAdd.UseVisualStyleBackColor = true; |
| | | btnAdd.Click += btnAdd_Click; |
| | | // |
| | | // labelFilterType |
| | | // |
| | | labelFilterType.AutoSize = true; |
| | | labelFilterType.Location = new Point(3, 0); |
| | | labelFilterType.MaximumSize = new Size(0, 33); |
| | | labelFilterType.MinimumSize = new Size(0, 33); |
| | | labelFilterType.Name = "labelFilterType"; |
| | | labelFilterType.Size = new Size(69, 33); |
| | | labelFilterType.TabIndex = 1; |
| | | labelFilterType.Text = "滤波类å"; |
| | | labelFilterType.TextAlign = ContentAlignment.MiddleCenter; |
| | | // |
| | | // btnDel |
| | | // |
| | | btnDel.Location = new Point(378, 3); |
| | | btnDel.Name = "btnDel"; |
| | | btnDel.Size = new Size(119, 33); |
| | | btnDel.TabIndex = 16; |
| | | btnDel.Text = "å é¤"; |
| | | btnDel.UseVisualStyleBackColor = true; |
| | | btnDel.Click += btnDel_Click; |
| | | // |
| | | // tableLayoutPanel5 |
| | | // |
| | | tableLayoutPanel5.ColumnCount = 4; |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F)); |
| | | tableLayoutPanel5.Controls.Add(labelMaskWidth, 0, 0); |
| | | tableLayoutPanel5.Controls.Add(labelMaskHeight, 2, 0); |
| | | tableLayoutPanel5.Controls.Add(txtMaskWidth, 1, 0); |
| | | tableLayoutPanel5.Controls.Add(txtMaskHeight, 3, 0); |
| | | tableLayoutPanel5.Dock = DockStyle.Fill; |
| | | tableLayoutPanel5.Location = new Point(3, 48); |
| | | tableLayoutPanel5.Name = "tableLayoutPanel5"; |
| | | tableLayoutPanel5.RowCount = 1; |
| | | tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel5.Size = new Size(500, 39); |
| | | tableLayoutPanel5.TabIndex = 1; |
| | | // |
| | | // labelMaskWidth |
| | | // |
| | | labelMaskWidth.AutoSize = true; |
| | | labelMaskWidth.Location = new Point(3, 0); |
| | | labelMaskWidth.MaximumSize = new Size(0, 33); |
| | | labelMaskWidth.MinimumSize = new Size(0, 33); |
| | | labelMaskWidth.Name = "labelMaskWidth"; |
| | | labelMaskWidth.Size = new Size(54, 33); |
| | | labelMaskWidth.TabIndex = 0; |
| | | labelMaskWidth.Text = "æ©è宽"; |
| | | // |
| | | // labelMaskHeight |
| | | // |
| | | labelMaskHeight.AutoSize = true; |
| | | labelMaskHeight.Location = new Point(253, 0); |
| | | labelMaskHeight.Name = "labelMaskHeight"; |
| | | labelMaskHeight.Size = new Size(54, 20); |
| | | labelMaskHeight.TabIndex = 1; |
| | | labelMaskHeight.Text = "æ©èé«"; |
| | | // |
| | | // txtMaskWidth |
| | | // |
| | | txtMaskWidth.Location = new Point(88, 3); |
| | | txtMaskWidth.Name = "txtMaskWidth"; |
| | | txtMaskWidth.Size = new Size(159, 27); |
| | | txtMaskWidth.TabIndex = 3; |
| | | // |
| | | // txtMaskHeight |
| | | // |
| | | txtMaskHeight.Location = new Point(338, 3); |
| | | txtMaskHeight.Name = "txtMaskHeight"; |
| | | txtMaskHeight.Size = new Size(159, 27); |
| | | txtMaskHeight.TabIndex = 4; |
| | | // |
| | | // tabPage5 |
| | | // |
| | | tabPage5.Controls.Add(tableLayoutPanel2); |
| | | tabPage5.Location = new Point(4, 29); |
| | | tabPage5.Margin = new Padding(4); |
| | | tabPage5.Name = "tabPage5"; |
| | | tabPage5.Size = new Size(520, 611); |
| | | tabPage5.TabIndex = 2; |
| | | tabPage5.Text = "è¿è¡åæ°"; |
| | | tabPage5.UseVisualStyleBackColor = true; |
| | | // |
| | | // tableLayoutPanel2 |
| | | // |
| | | tableLayoutPanel2.ColumnCount = 4; |
| | | tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 77F)); |
| | | tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 193F)); |
| | | tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 26F)); |
| | | tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel2.Controls.Add(cmbTypeRoi, 1, 0); |
| | | tableLayoutPanel2.Controls.Add(label21, 0, 0); |
| | | tableLayoutPanel2.Controls.Add(label22, 0, 1); |
| | | tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1); |
| | | tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0); |
| | | tableLayoutPanel2.Location = new Point(4, 4); |
| | | tableLayoutPanel2.Margin = new Padding(4); |
| | | tableLayoutPanel2.Name = "tableLayoutPanel2"; |
| | | tableLayoutPanel2.RowCount = 8; |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F)); |
| | | tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel2.Size = new Size(415, 364); |
| | | tableLayoutPanel2.TabIndex = 4; |
| | | // |
| | | // cmbTypeRoi |
| | | // |
| | | cmbTypeRoi.FormattingEnabled = true; |
| | | cmbTypeRoi.Location = new Point(81, 4); |
| | | cmbTypeRoi.Margin = new Padding(4); |
| | | cmbTypeRoi.Name = "cmbTypeRoi"; |
| | | cmbTypeRoi.Size = new Size(154, 28); |
| | | cmbTypeRoi.TabIndex = 1; |
| | | cmbTypeRoi.SelectedIndexChanged += cmbTypeRoi_SelectedIndexChanged; |
| | | // |
| | | // label21 |
| | | // |
| | | label21.AutoSize = true; |
| | | label21.Dock = DockStyle.Fill; |
| | | label21.Location = new Point(4, 0); |
| | | label21.Margin = new Padding(4, 0, 4, 0); |
| | | label21.Name = "label21"; |
| | | label21.Size = new Size(69, 35); |
| | | label21.TabIndex = 3; |
| | | label21.Text = "ROI"; |
| | | label21.TextAlign = ContentAlignment.MiddleCenter; |
| | | // |
| | | // label22 |
| | | // |
| | | label22.AutoSize = true; |
| | | label22.Dock = DockStyle.Fill; |
| | | label22.Location = new Point(4, 35); |
| | | label22.Margin = new Padding(4, 0, 4, 0); |
| | | label22.Name = "label22"; |
| | | label22.Size = new Size(69, 35); |
| | | label22.TabIndex = 4; |
| | | label22.Text = "Fixture"; |
| | | label22.TextAlign = ContentAlignment.MiddleCenter; |
| | | // |
| | | // cmbFixture |
| | | // |
| | | cmbFixture.FormattingEnabled = true; |
| | | cmbFixture.Location = new Point(81, 39); |
| | | cmbFixture.Margin = new Padding(4); |
| | | cmbFixture.Name = "cmbFixture"; |
| | | cmbFixture.Size = new Size(154, 28); |
| | | cmbFixture.TabIndex = 5; |
| | | // |
| | | // ckbDrawRoi |
| | | // |
| | | ckbDrawRoi.AutoSize = true; |
| | | ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter; |
| | | ckbDrawRoi.Location = new Point(274, 4); |
| | | ckbDrawRoi.Margin = new Padding(4); |
| | | ckbDrawRoi.Name = "ckbDrawRoi"; |
| | | ckbDrawRoi.Size = new Size(18, 17); |
| | | ckbDrawRoi.TabIndex = 2; |
| | | ckbDrawRoi.UseVisualStyleBackColor = true; |
| | | ckbDrawRoi.CheckedChanged += ckbDrawRoi_CheckedChanged; |
| | | // |
| | | // imgTabControl |
| | | // |
| | | imgTabControl.Controls.Add(tabPageInputImage); |
| | | imgTabControl.Controls.Add(tabPageRecordImage); |
| | | imgTabControl.Dock = DockStyle.Fill; |
| | | imgTabControl.Location = new Point(540, 4); |
| | | imgTabControl.Margin = new Padding(4); |
| | | imgTabControl.Name = "imgTabControl"; |
| | | imgTabControl.SelectedIndex = 0; |
| | | imgTabControl.Size = new Size(798, 644); |
| | | imgTabControl.TabIndex = 49; |
| | | // |
| | | // tabPageInputImage |
| | | // |
| | | tabPageInputImage.Controls.Add(pnlInputImage); |
| | | tabPageInputImage.Location = new Point(4, 29); |
| | | tabPageInputImage.Margin = new Padding(4); |
| | | tabPageInputImage.Name = "tabPageInputImage"; |
| | | tabPageInputImage.Padding = new Padding(4); |
| | | tabPageInputImage.Size = new Size(790, 611); |
| | | tabPageInputImage.TabIndex = 0; |
| | | tabPageInputImage.Text = "è¾å
¥å¾å"; |
| | | tabPageInputImage.UseVisualStyleBackColor = true; |
| | | // |
| | | // tabPageRecordImage |
| | | // |
| | | tabPageRecordImage.Controls.Add(pnlRecordImage); |
| | | tabPageRecordImage.Location = new Point(4, 29); |
| | | tabPageRecordImage.Margin = new Padding(4); |
| | | tabPageRecordImage.Name = "tabPageRecordImage"; |
| | | tabPageRecordImage.Padding = new Padding(4); |
| | | tabPageRecordImage.Size = new Size(790, 611); |
| | | tabPageRecordImage.TabIndex = 1; |
| | | tabPageRecordImage.Text = "ç»æå¾å"; |
| | | tabPageRecordImage.UseVisualStyleBackColor = true; |
| | | // |
| | | // pnlRecordImage |
| | | // |
| | | pnlRecordImage.Dock = DockStyle.Fill; |
| | | pnlRecordImage.Location = new Point(4, 4); |
| | | pnlRecordImage.Margin = new Padding(5); |
| | | pnlRecordImage.Name = "pnlRecordImage"; |
| | | pnlRecordImage.Size = new Size(782, 603); |
| | | pnlRecordImage.TabIndex = 45; |
| | | // |
| | | // HFilterToolEdit |
| | | // |
| | | AutoScaleDimensions = new SizeF(9F, 20F); |
| | | AutoScaleMode = AutoScaleMode.Font; |
| | | Controls.Add(MainTableLayoutPanel); |
| | | Controls.Add(BtmStatusStrip); |
| | | Controls.Add(TopToolStrip); |
| | | Margin = new Padding(3, 4, 3, 4); |
| | | Name = "HFilterToolEdit"; |
| | | Size = new Size(1342, 705); |
| | | Load += HFilterToolEdit_Load; |
| | | TopToolStrip.ResumeLayout(false); |
| | | TopToolStrip.PerformLayout(); |
| | | BtmStatusStrip.ResumeLayout(false); |
| | | BtmStatusStrip.PerformLayout(); |
| | | MainTableLayoutPanel.ResumeLayout(false); |
| | | parasTabControl.ResumeLayout(false); |
| | | tabPage1.ResumeLayout(false); |
| | | tableLayoutPanel1.ResumeLayout(false); |
| | | ((System.ComponentModel.ISupportInitialize)dataGridViewFi).EndInit(); |
| | | tableLayoutPanel4.ResumeLayout(false); |
| | | tableLayoutPanel6.ResumeLayout(false); |
| | | tableLayoutPanel6.PerformLayout(); |
| | | tableLayoutPanel3.ResumeLayout(false); |
| | | tableLayoutPanel3.PerformLayout(); |
| | | tableLayoutPanel5.ResumeLayout(false); |
| | | tableLayoutPanel5.PerformLayout(); |
| | | tabPage5.ResumeLayout(false); |
| | | tableLayoutPanel2.ResumeLayout(false); |
| | | tableLayoutPanel2.PerformLayout(); |
| | | imgTabControl.ResumeLayout(false); |
| | | tabPageInputImage.ResumeLayout(false); |
| | | tabPageRecordImage.ResumeLayout(false); |
| | | ResumeLayout(false); |
| | | PerformLayout(); |
| | | } |
| | | |
| | | #endregion |
| | | private System.Windows.Forms.Panel pnlInputImage; |
| | | private ToolStrip TopToolStrip; |
| | | private ToolStripButton btnRun; |
| | | private StatusStrip BtmStatusStrip; |
| | | private ToolStripStatusLabel lblResult; |
| | | private ToolStripStatusLabel lblMsg; |
| | | private TableLayoutPanel MainTableLayoutPanel; |
| | | private ToolStripButton btnLoadImage; |
| | | private TabControl parasTabControl; |
| | | private TabPage tabPage1; |
| | | private TabPage tabPage5; |
| | | private TabControl imgTabControl; |
| | | private TabPage tabPageInputImage; |
| | | private TabPage tabPageRecordImage; |
| | | private ToolStripButton btnSaveParas; |
| | | private ToolStripButton btnLoadParas; |
| | | private Panel pnlRecordImage; |
| | | private ToolStripStatusLabel lblRunTime; |
| | | private TableLayoutPanel tableLayoutPanel2; |
| | | public ComboBox cmbTypeRoi; |
| | | private Label label21; |
| | | private Label label22; |
| | | private ComboBox cmbFixture; |
| | | private CheckBox ckbDrawRoi; |
| | | private TableLayoutPanel tableLayoutPanel1; |
| | | private TableLayoutPanel tableLayoutPanel3; |
| | | private Label labelFilterType; |
| | | private ComboBox cmbFilterType; |
| | | private DataGridView dataGridViewFi; |
| | | private TableLayoutPanel tableLayoutPanel4; |
| | | private Button btnAdd; |
| | | private TableLayoutPanel tableLayoutPanel5; |
| | | private Label labelMaskWidth; |
| | | private Label labelMaskHeight; |
| | | private TextBox txtMaskWidth; |
| | | private TextBox txtMaskHeight; |
| | | private TableLayoutPanel tableLayoutPanel6; |
| | | private TextBox txtGuassSize; |
| | | private Label labelGuassSize; |
| | | private Button btnDel; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using HalconDotNet; |
| | | using LB_SmartVisionCommon; |
| | | using LB_VisionControl; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | using System.Drawing; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | |
| | | namespace LB_VisionProcesses.Alogrithms.Halcon |
| | | { |
| | | public partial class HFilterToolEdit : TAlgorithmEdit |
| | | { |
| | | List<RecordFilterData> recordFilterDatas = new List<RecordFilterData>(); |
| | | private int rowriginalHeight; |
| | | public HFilterToolEdit(HFilterTool subject = null) |
| | | { |
| | | if (subject != null && subject is HFilterTool) |
| | | Subject = subject; |
| | | else |
| | | Subject = new HFilterTool(); |
| | | |
| | | //if (!(Subject.Params.ROI is HSegment)) |
| | | // Subject.Params.ROI = new HSegment(0, 0, 250, 250); |
| | | |
| | | this.Dock = DockStyle.Fill; |
| | | InitializeComponent(); |
| | | // ä¿ååå§è¡é«åº¦ |
| | | rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; //45; |
| | | recordFilterDatas = FilterManager.Instance.GetAllUsers(); |
| | | |
| | | InitializeComboBox(); |
| | | InitializeDataGridView(); |
| | | |
| | | |
| | | |
| | | this.dataGridViewFi.DataSource = recordFilterDatas; |
| | | this.dataGridViewFi.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | private void InitializeComboBox() |
| | | { |
| | | // æ·»å æéé项 |
| | | foreach (var item in Enum.GetValues(typeof(FilterType))) |
| | | { |
| | | cmbFilterType.Items.Add(item.ToString()); |
| | | } |
| | | |
| | | // 设置é»è®¤éæ©é¡¹ |
| | | cmbFilterType.SelectedIndex = 0; |
| | | } |
| | | |
| | | private void InitializeDataGridView() |
| | | { |
| | | this.dataGridViewFi.DataSource = recordFilterDatas; |
| | | |
| | | // 设置DataGridViewå宽 |
| | | dataGridViewFi.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§ä»¶å è½½äºä»¶ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void HFilterToolEdit_Load(object sender, EventArgs e) |
| | | { |
| | | pnlInputImage.Controls.Add(inputImageHSmartWindowControl); |
| | | inputImageHSmartWindowControl.Dock = DockStyle.Fill; |
| | | |
| | | pnlRecordImage.Controls.Add(recordImageHSmartWindowControl); |
| | | recordImageHSmartWindowControl.Dock = DockStyle.Fill; |
| | | |
| | | //éåå¯ä»¥éæ©çRoiç±»åæä¸¾ |
| | | foreach (var value in Enum.GetValues(typeof(RoiType))) |
| | | cmbTypeRoi.Items.Add(value.ToString()); |
| | | |
| | | //éåå¯ä»¥éæ©çå¾å滤波类åæä¸¾ |
| | | //foreach (var value in Enum.GetValues(typeof(FilterType))) |
| | | // cmbFilterType.Items.Add(value.ToString()); |
| | | |
| | | //éåå¯ä»¥éæ©çFixtureæä¸¾ |
| | | cmbFixture.Items.Add(""); |
| | | foreach (string value in IProcess.dicFixtures.Keys) |
| | | cmbFixture.Items.Add(value.ToString()); |
| | | |
| | | ckbDrawRoi.Checked = true; |
| | | cmbTypeRoi.Text = RoiType.Segment.ToString(); |
| | | cmbFilterType.Text = FilterType.å弿»¤æ³¢_MeanImage.ToString(); |
| | | LoadParas(); |
| | | |
| | | if (Subject.Result) |
| | | { |
| | | lblResult.BackColor = Color.Green; |
| | | lblResult.Text = "True"; |
| | | } |
| | | else |
| | | { |
| | | lblResult.BackColor = Color.Red; |
| | | lblResult.Text = "False"; |
| | | } |
| | | |
| | | lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg; |
| | | lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); |
| | | lblRunTime.Text = $"{Subject.RunTime}ms"; |
| | | } |
| | | |
| | | private void ClearInputFields() |
| | | { |
| | | txtMaskWidth.Clear(); |
| | | txtMaskHeight.Clear(); |
| | | txtGuassSize.Clear(); |
| | | cmbFilterType.SelectedIndex = 0; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å ç®å |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | // éªè¯è¾å
¥ |
| | | switch (cmbFilterType.SelectedIndex) |
| | | { |
| | | case 0: |
| | | if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text)) |
| | | { |
| | | MessageBox.Show("è¯·å¡«åææå¿
å¡«åæ®µï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | break; |
| | | case 1: |
| | | if (string.IsNullOrWhiteSpace(txtGuassSize.Text)) |
| | | { |
| | | MessageBox.Show("è¯·å¡«åææå¿
å¡«åæ®µï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | break; |
| | | case 2: |
| | | if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text)) |
| | | { |
| | | MessageBox.Show("è¯·å¡«åææå¿
å¡«åæ®µï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | RecordFilterData filter = new RecordFilterData(); |
| | | filter.MaskWidth = this.txtMaskWidth.Text; |
| | | filter.MaskHight = this.txtMaskHeight.Text; |
| | | filter.GaussSize = this.txtGuassSize.Text; |
| | | filter.FilterName = (FilterType)this.cmbFilterType.SelectedIndex; |
| | | // æ·»å å° UserManager |
| | | bool success = FilterManager.Instance.AddFilter(filter); |
| | | if (success) |
| | | { |
| | | recordFilterDatas.Add(filter); |
| | | //MessageBox.Show("ç¨æ·æ·»å æåï¼", "æç¤º", |
| | | // MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | |
| | | // æ¸
空è¾å
¥æ¡ |
| | | ClearInputFields(); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("æ·»å ç¨æ·å¤±è´¥ï¼", "é误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordFilterDatas = FilterManager.Instance.GetAllUsers(); |
| | | this.dataGridViewFi.DataSource = recordFilterDatas; |
| | | this.dataGridViewFi.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | private void btnDel_Click(object sender, EventArgs e) |
| | | { |
| | | // æ£æ¥æ¯å¦æéä¸ç滤波类å |
| | | if (cmbFilterType.SelectedIndex < 0) |
| | | { |
| | | MessageBox.Show("è¯·éæ©è¦å é¤ç滤波类åï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | try |
| | | { |
| | | DataGridViewRow selectedRow = dataGridViewFi.SelectedRows[0]; |
| | | string filterToDel = selectedRow.Cells[0].Value?.ToString(); |
| | | |
| | | |
| | | FilterType filterToDelete = (FilterType)cmbFilterType.SelectedIndex; |
| | | |
| | | // æ¥æ¾å¯¹åºçè®°å½ |
| | | RecordFilterData filterToRemove = null; |
| | | |
| | | // 仿¬å°åè¡¨ä¸æ¥æ¾ |
| | | foreach (var filter in recordFilterDatas) |
| | | { |
| | | if (filter.FilterName.ToString() == filterToDel) |
| | | { |
| | | filterToRemove = filter; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (filterToRemove == null) |
| | | { |
| | | MessageBox.Show("æªæ¾å°å¯¹åºçè®°å½ï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | // 确认å é¤ |
| | | DialogResult result = MessageBox.Show( |
| | | $"ç¡®å®è¦å é¤ '{filterToDel}' è®°å½åï¼", |
| | | "确认å é¤", |
| | | MessageBoxButtons.YesNo, |
| | | MessageBoxIcon.Question, |
| | | MessageBoxDefaultButton.Button2); // é»è®¤éæ©"å¦" |
| | | |
| | | if (result == DialogResult.No) |
| | | return; |
| | | |
| | | // ä»ç®¡çå¨ä¸å é¤ |
| | | bool success = FilterManager.Instance.DeleteUser(filterToRemove); |
| | | |
| | | if (success) |
| | | { |
| | | // 仿¬å°å表ä¸å é¤ |
| | | recordFilterDatas.Remove(filterToRemove); |
| | | |
| | | MessageBox.Show("å 餿åï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("å é¤å¤±è´¥ï¼", "é误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordFilterDatas = FilterManager.Instance.GetAllUsers(); |
| | | this.dataGridViewFi.DataSource = recordFilterDatas; |
| | | this.dataGridViewFi.AutoGenerateColumns = true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show("è¯·éæ©è¦å é¤çç®å"); |
| | | } |
| | | } |
| | | #region ç®æ³éæ©ä¸ææ¡ |
| | | private void cmbFilterType_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | ComboBox cb = sender as ComboBox; |
| | | |
| | | if (cb.SelectedIndex == 0) |
| | | { |
| | | ShowRow1(); |
| | | } |
| | | else if (cb.SelectedIndex == 1) |
| | | { |
| | | ShowRow2(); |
| | | } |
| | | else |
| | | { |
| | | ShowRow1(); |
| | | } |
| | | } |
| | | private void ShowRow1() |
| | | { |
| | | // æ¾ç¤ºRow2ï¼æ¢å¤é«åº¦ï¼ |
| | | tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute; |
| | | tableLayoutPanel4.RowStyles[1].Height = rowriginalHeight; |
| | | tableLayoutPanel4.RowStyles[2].SizeType = SizeType.Absolute; |
| | | tableLayoutPanel4.RowStyles[2].Height = 0; |
| | | |
| | | // æ¾ç¤ºRow2ä¸çæ§ä»¶ |
| | | foreach (Control ctrl in tableLayoutPanel4.Controls) |
| | | { |
| | | int row = tableLayoutPanel4.GetRow(ctrl); |
| | | if (row == 1) |
| | | ctrl.Visible = true; |
| | | if (row == 2) |
| | | ctrl.Visible = false; |
| | | } |
| | | } |
| | | |
| | | private void ShowRow2() |
| | | { |
| | | // æ¾ç¤ºRow2ï¼æ¢å¤é«åº¦ï¼ |
| | | tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute; |
| | | tableLayoutPanel4.RowStyles[1].Height = 0; |
| | | tableLayoutPanel4.RowStyles[2].SizeType = SizeType.Absolute; |
| | | tableLayoutPanel4.RowStyles[2].Height = rowriginalHeight; |
| | | |
| | | // æ¾ç¤ºRow2ä¸çæ§ä»¶ |
| | | foreach (Control ctrl in tableLayoutPanel4.Controls) |
| | | { |
| | | int row = tableLayoutPanel4.GetRow(ctrl); |
| | | if (row == 1) |
| | | ctrl.Visible = false; |
| | | if (row == 2) |
| | | ctrl.Visible = true; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region ROI |
| | | /// <summary> |
| | | /// æ´æ°è¿è¡åæ° |
| | | /// </summary> |
| | | public override void UpdataInputs() |
| | | { |
| | | //设置è¿è¡åæ° |
| | | double dResult = 0; |
| | | int iResult = 0; |
| | | |
| | | if (cmbFixture.Text == "") |
| | | Subject.Params.Fixture = new Fixture(); |
| | | else if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text)) |
| | | Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text]; |
| | | |
| | | Type type = inputImageHSmartWindowControl.oRoi?.GetType(); |
| | | switch (type) |
| | | { |
| | | case Type t when t == typeof(HRectangle2): |
| | | HRectangle2 hRectangle2 = (HRectangle2)inputImageHSmartWindowControl.oRoi; |
| | | Subject.Params.ROI |
| | | = new HRectangle2(hRectangle2.X - Subject.Params.Fixture.X, hRectangle2.Y - Subject.Params.Fixture.Y |
| | | , hRectangle2.Phi - Subject.Params.Fixture.Phi, hRectangle2.Width, hRectangle2.Height); |
| | | break; |
| | | case Type t when t == typeof(HCircle): |
| | | HCircle hCircle = (HCircle)inputImageHSmartWindowControl.oRoi; |
| | | Subject.Params.ROI |
| | | = new HCircle(hCircle.X - Subject.Params.Fixture.X, hCircle.Y - Subject.Params.Fixture.Y, hCircle.Radius); |
| | | break; |
| | | case Type t when t == typeof(HSegment): |
| | | HSegment hSegment = (HSegment)inputImageHSmartWindowControl.oRoi; |
| | | Subject.Params.ROI |
| | | = new HSegment(hSegment.StartX - Subject.Params.Fixture.X, hSegment.StartY - Subject.Params.Fixture.Y |
| | | , hSegment.EndX - Subject.Params.Fixture.X, hSegment.EndY - Subject.Params.Fixture.Y); |
| | | break; |
| | | default: |
| | | Subject.Params.ROI = new ROI(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å è½½è¿è¡åæ° |
| | | /// </summary> |
| | | public override void LoadParas() |
| | | { |
| | | this.BeginInvoke(new Action(() => |
| | | { |
| | | |
| | | if (Subject.InputImage != null && Subject.InputImage is HObject) |
| | | inputImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage); |
| | | |
| | | Type type = Subject.Params.ROI?.GetType(); |
| | | if (Subject.Params.ROI != null) |
| | | { |
| | | switch (type) |
| | | { |
| | | case Type t when t == typeof(HRectangle2): |
| | | cmbTypeRoi.Text = RoiType.Rectangle2.ToString(); |
| | | break; |
| | | case Type t when t == typeof(HCircle): |
| | | cmbTypeRoi.Text = RoiType.Circle.ToString(); |
| | | break; |
| | | case Type t when t == typeof(HSegment): |
| | | cmbTypeRoi.Text = RoiType.Segment.ToString(); |
| | | break; |
| | | default: |
| | | cmbTypeRoi.Text = RoiType.None.ToString(); |
| | | break; |
| | | } |
| | | if (cmbTypeRoi.Text.ToString() != "None") |
| | | ckbDrawRoi.Checked = true; |
| | | else |
| | | ckbDrawRoi.Checked = false; |
| | | |
| | | inputImageHSmartWindowControl.oRoi = Subject.Params.ROI; |
| | | } |
| | | |
| | | if (Subject.Params.Fixture != null) |
| | | cmbFixture.Text = Subject.Params.Fixture.strName; |
| | | else |
| | | cmbFixture.Text = ""; |
| | | |
| | | switch (type) |
| | | { |
| | | case Type t when t == typeof(HRectangle2): |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HRectangle2(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y |
| | | , Subject.Params.ROI.Phi + Subject.Params.Fixture.Phi, ((HRectangle2)Subject.Params.ROI).Width, ((HRectangle2)Subject.Params.ROI).Height); |
| | | break; |
| | | case Type t when t == typeof(HCircle): |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HCircle(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y |
| | | , ((HCircle)Subject.Params.ROI).Radius); |
| | | break; |
| | | case Type t when t == typeof(HSegment): |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HSegment(((HSegment)Subject.Params.ROI).StartX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).StartY + Subject.Params.Fixture.Y |
| | | , ((HSegment)Subject.Params.ROI).EndX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).EndY + Subject.Params.Fixture.Y); |
| | | break; |
| | | default: |
| | | inputImageHSmartWindowControl.oRoi = null; |
| | | break; |
| | | } |
| | | base.LoadParas(); |
| | | })); |
| | | } |
| | | #endregion |
| | | |
| | | #region å·¥å
·æ æé®äºä»¶ |
| | | /// <summary> |
| | | /// ç¹å»è¿è¡ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public override void btnRun_Click(object sender, EventArgs e) |
| | | { |
| | | if (Subject.InputImage != null) |
| | | InputImage = Subject.InputImage; |
| | | |
| | | DateTime StartTime = DateTime.Now; |
| | | Run(); |
| | | |
| | | //æ´æ°æ¥å¿ä¸ç»æ |
| | | this.BeginInvoke(new Action(() => |
| | | { |
| | | if (Subject.Result) |
| | | { |
| | | lblResult.BackColor = Color.Green; |
| | | lblResult.Text = "True"; |
| | | recordImageHSmartWindowControl.SetColor("green"); |
| | | } |
| | | else |
| | | { |
| | | lblResult.BackColor = Color.Red; |
| | | lblResult.Text = "False"; |
| | | recordImageHSmartWindowControl.SetColor("red"); |
| | | } |
| | | |
| | | lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg; |
| | | lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); |
| | | lblRunTime.Text = $"{(DateTime.Now - StartTime).TotalMilliseconds}ms"; |
| | | |
| | | UpdataOutputs(); |
| | | imgTabControl.SelectedTab = tabPageRecordImage; |
| | | |
| | | if (Subject.InputImage != null && Subject.InputImage is HObject) |
| | | { |
| | | HOperatorSet.GetImageSize((HObject)Subject.InputImage, out HTuple ho_ImageWidth, out HTuple ho_ImageHeight); |
| | | recordImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage); |
| | | } |
| | | |
| | | //å
夿åç±»å夿ç¶ç±» |
| | | if (Subject.Record != null && Subject.Record is MsgRecord msgRecord) |
| | | { |
| | | recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_OK, true); |
| | | recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_NG, false); |
| | | |
| | | for (int i = 0; i < msgRecord.Msg.Length; i++) |
| | | recordImageHSmartWindowControl.ShowMsg(msgRecord.Msg[i] |
| | | , 1 == msgRecord.Result[i] ? true : false, msgRecord.Column[i], msgRecord.Row[i]); |
| | | } |
| | | else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord) |
| | | { |
| | | recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true); |
| | | recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false); |
| | | } |
| | | |
| | | GC.Collect(); |
| | | })); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å·¥å
·æ â导å¾â |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public override void btnLoadImage_Click(object sender, EventArgs e) |
| | | { |
| | | OpenFileDialog openFileDialog = new OpenFileDialog(); |
| | | |
| | | // 设置æä»¶å¯¹è¯æ¡ç屿§ |
| | | openFileDialog.Multiselect = false; // ä¸å
许å¤é |
| | | // 设置æä»¶è¿æ»¤å¨ï¼æ¯æå¤ç§æä»¶ç±»å |
| | | openFileDialog.Filter = "Image Files (*.png;*.jpg;*.jpeg;*.bmp)|*.png;*.jpg;*.jpeg;*.bmp|All Files (*.*)|*.*"; |
| | | // æ¾ç¤ºæä»¶å¯¹è¯æ¡ |
| | | DialogResult result = openFileDialog.ShowDialog(); |
| | | |
| | | // å¤çå¯¹è¯æ¡è¿åç»æ |
| | | if (result == DialogResult.OK) |
| | | { |
| | | // è·åç¨æ·éæ©çæä»¶å |
| | | string[] selectedFiles = openFileDialog.FileNames; |
| | | if (selectedFiles.Length > 0) |
| | | { |
| | | HOperatorSet.ReadImage(out HObject ho_Image, selectedFiles[0]); |
| | | //夿æ¯å¦ä¸ºç°åº¦å¾ |
| | | using (HDevDisposeHelper dh = new HDevDisposeHelper()) |
| | | { |
| | | HOperatorSet.CountChannels(ho_Image, out HTuple hv_Channels); |
| | | if (hv_Channels.TupleInt() != 1) |
| | | { |
| | | HOperatorSet.Rgb1ToGray(ho_Image, out ho_Image); |
| | | //æ´æ°æ¥å¿ä¸ç»æ |
| | | this.BeginInvoke(new Action(() => |
| | | { |
| | | lblMsg.Text = "导å
¥å¾çéç°åº¦å¾,èªå¨è½¬æ¢ä¸ºç°åº¦å¾"; |
| | | })); |
| | | } |
| | | InputImage = ho_Image; |
| | | imgTabControl.SelectedTab = tabPageInputImage; |
| | | inputImageHSmartWindowControl.oRoi = inputImageHSmartWindowControl.oRoi; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// å·¥å
·æ âä¿åâ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public override void btnSaveParas_Click(object sender, EventArgs e) { base.btnSaveParas_Click(sender, e); } |
| | | #endregion |
| | | |
| | | #region ROIåè½ |
| | | /// <summary> |
| | | /// æ¯å¦å¯ç¨ROI |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public override void ckbDrawRoi_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | if (ckbDrawRoi.Checked) |
| | | { |
| | | inputImageHSmartWindowControl.bAollowDraw = true; |
| | | imgTabControl.SelectedTab = tabPageInputImage; |
| | | } |
| | | else |
| | | { |
| | | inputImageHSmartWindowControl.bAollowDraw = false; |
| | | Subject.Params.ROI = new ROI(); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// ROIä¸ææ¡æ¹åäºä»¶ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public override void cmbTypeRoi_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | try |
| | | { |
| | | if (Enum.TryParse(cmbTypeRoi.Text.ToString(), out RoiType type)) |
| | | { |
| | | HTuple hv_imageWidth = 0; |
| | | HTuple hv_imageHeight = 0; |
| | | if (InputImage != null && InputImage is HObject) |
| | | HOperatorSet.GetImageSize((HObject)InputImage, out hv_imageWidth, out hv_imageHeight); |
| | | switch (type) |
| | | { |
| | | case RoiType.Rectangle2: |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0 |
| | | , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4); |
| | | break; |
| | | case RoiType.Circle: |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4); |
| | | break; |
| | | case RoiType.Segment: |
| | | inputImageHSmartWindowControl.oRoi |
| | | = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4); |
| | | break; |
| | | case RoiType.None: |
| | | default: |
| | | inputImageHSmartWindowControl.oRoi = null; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | public override void cmbFixture_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | try |
| | | { |
| | | if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text)) |
| | | Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text]; |
| | | else |
| | | Subject.Params.Fixture = new Fixture(); |
| | | } |
| | | catch { } |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <root> |
| | | <!-- |
| | | Microsoft ResX Schema |
| | | |
| | | Version 2.0 |
| | | |
| | | The primary goals of this format is to allow a simple XML format |
| | | that is mostly human readable. The generation and parsing of the |
| | | various data types are done through the TypeConverter classes |
| | | associated with the data types. |
| | | |
| | | Example: |
| | | |
| | | ... ado.net/XML headers & schema ... |
| | | <resheader name="resmimetype">text/microsoft-resx</resheader> |
| | | <resheader name="version">2.0</resheader> |
| | | <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
| | | <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
| | | <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
| | | <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
| | | <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
| | | <value>[base64 mime encoded serialized .NET Framework object]</value> |
| | | </data> |
| | | <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
| | | <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
| | | <comment>This is a comment</comment> |
| | | </data> |
| | | |
| | | There are any number of "resheader" rows that contain simple |
| | | name/value pairs. |
| | | |
| | | Each data row contains a name, and value. The row also contains a |
| | | type or mimetype. Type corresponds to a .NET class that support |
| | | text/value conversion through the TypeConverter architecture. |
| | | Classes that don't support this are serialized and stored with the |
| | | mimetype set. |
| | | |
| | | The mimetype is used for serialized objects, and tells the |
| | | ResXResourceReader how to depersist the object. This is currently not |
| | | extensible. For a given mimetype the value must be set accordingly: |
| | | |
| | | Note - application/x-microsoft.net.object.binary.base64 is the format |
| | | that the ResXResourceWriter will generate, however the reader can |
| | | read any of the formats listed below. |
| | | |
| | | mimetype: application/x-microsoft.net.object.binary.base64 |
| | | value : The object must be serialized with |
| | | : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |
| | | : and then encoded with base64 encoding. |
| | | |
| | | mimetype: application/x-microsoft.net.object.soap.base64 |
| | | value : The object must be serialized with |
| | | : System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
| | | : and then encoded with base64 encoding. |
| | | |
| | | mimetype: application/x-microsoft.net.object.bytearray.base64 |
| | | value : The object must be serialized into a byte array |
| | | : using a System.ComponentModel.TypeConverter |
| | | : and then encoded with base64 encoding. |
| | | --> |
| | | <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
| | | <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> |
| | | <xsd:element name="root" msdata:IsDataSet="true"> |
| | | <xsd:complexType> |
| | | <xsd:choice maxOccurs="unbounded"> |
| | | <xsd:element name="metadata"> |
| | | <xsd:complexType> |
| | | <xsd:sequence> |
| | | <xsd:element name="value" type="xsd:string" minOccurs="0" /> |
| | | </xsd:sequence> |
| | | <xsd:attribute name="name" use="required" type="xsd:string" /> |
| | | <xsd:attribute name="type" type="xsd:string" /> |
| | | <xsd:attribute name="mimetype" type="xsd:string" /> |
| | | <xsd:attribute ref="xml:space" /> |
| | | </xsd:complexType> |
| | | </xsd:element> |
| | | <xsd:element name="assembly"> |
| | | <xsd:complexType> |
| | | <xsd:attribute name="alias" type="xsd:string" /> |
| | | <xsd:attribute name="name" type="xsd:string" /> |
| | | </xsd:complexType> |
| | | </xsd:element> |
| | | <xsd:element name="data"> |
| | | <xsd:complexType> |
| | | <xsd:sequence> |
| | | <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
| | | <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
| | | </xsd:sequence> |
| | | <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> |
| | | <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
| | | <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
| | | <xsd:attribute ref="xml:space" /> |
| | | </xsd:complexType> |
| | | </xsd:element> |
| | | <xsd:element name="resheader"> |
| | | <xsd:complexType> |
| | | <xsd:sequence> |
| | | <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
| | | </xsd:sequence> |
| | | <xsd:attribute name="name" type="xsd:string" use="required" /> |
| | | </xsd:complexType> |
| | | </xsd:element> |
| | | </xsd:choice> |
| | | </xsd:complexType> |
| | | </xsd:element> |
| | | </xsd:schema> |
| | | <resheader name="resmimetype"> |
| | | <value>text/microsoft-resx</value> |
| | | </resheader> |
| | | <resheader name="version"> |
| | | <value>2.0</value> |
| | | </resheader> |
| | | <resheader name="reader"> |
| | | <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
| | | </resheader> |
| | | <resheader name="writer"> |
| | | <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
| | | </resheader> |
| | | <metadata name="lblMsgToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |
| | | <value>17, 17</value> |
| | | </metadata> |
| | | <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |
| | | <value>183, 17</value> |
| | | </metadata> |
| | | <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> |
| | | <value>340, 17</value> |
| | | </metadata> |
| | | </root> |
| | |
| | | using HalconDotNet; |
| | | using LB_SmartVisionCommon; |
| | | using LB_VisionControl; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Drawing.Imaging; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | |
| | | { |
| | | public enum ImageEnhancementType { Emphasize, EquHisto, ScaleMax } |
| | | |
| | | [Process("Halconå¾åå¢å¼º", Category = "Halcon2Då·¥å
·", Description = "å建å¾åå¢å¼ºå·¥å
·")] |
| | | [Process("Halcon2Då¾åå¢å¼º", Category = "Halcon2Då·¥å
·", Description = "å建å¾åå¢å¼ºå·¥å
·")] |
| | | public class HImageEnhancementTool : TAlgorithm |
| | | { |
| | | public HImageEnhancementTool() |
| | | { |
| | | strProcessClass = "LB_VisionProcesses.Alogrithms.Halcon.HImageEnhancementTool"; |
| | | strProcessName = "Halconå¾åå¢å¼ºå·¥å
·"; |
| | | strProcessName = "Halcon2Då¾åå¢å¼ºå·¥å
·"; |
| | | |
| | | Params.Inputs.Add("滤波å¨ç±»å", "è¾¹ç¼å¢å¼º"); |
| | | Params.Inputs.Add("æ©è宽", 1); |
| | |
| | | |
| | | Params.ROI = new HSegment(0, 0, 250, 250); |
| | | } |
| | | |
| | | |
| | | List<RecordImageEnhancementData> recordImageEnhancementDatas = new List<RecordImageEnhancementData>(); |
| | | /// <summary> |
| | | /// ç®åé»è¾ |
| | | /// </summary> |
| | |
| | | Result = false; |
| | | return; |
| | | } |
| | | |
| | | #region è£åªåºå |
| | | if (!(Params.ROI is HSegment)) |
| | | if (InputImage is Bitmap) |
| | | { |
| | | Msg = "ROIç±»åé误,å¿
须为HSegmentç±»å"; |
| | | Result = false; |
| | | return; |
| | | try |
| | | { |
| | | using (HImage hImage = new HImage()) |
| | | { |
| | | Bitmap bitmap = (Bitmap)InputImage; |
| | | Rectangle rect = new Rectangle(0, 0, ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height); |
| | | BitmapData srcBmpData = ((Bitmap)bitmap).LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb); |
| | | hImage.GenImageInterleaved(srcBmpData.Scan0, "rgbx", ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height, 0, "byte", ((Bitmap)bitmap).Width, ((Bitmap)bitmap).Height, 0, 0, -1, 0); |
| | | ((Bitmap)bitmap).UnlockBits(srcBmpData); |
| | | bitmap.Dispose(); |
| | | bitmap = null; |
| | | InputImage = null; |
| | | InputImage = hImage.Clone(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | } |
| | | |
| | | if (!(InputImage is HObject)) |
| | | { |
| | | Msg = "è¾å
¥å¾çç±»åé误,å¿
须为HObjectç±»å"; |
| | | Msg = "è¾å
¥å¾çæ ¼å¼ä¸ä¸ºHObject"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | #region è£åªåºå |
| | | //if (!(Params.ROI is HSegment)) |
| | | //{ |
| | | // Msg = "ROIç±»åé误,å¿
须为HSegmentç±»å"; |
| | | // Result = false; |
| | | // return; |
| | | //} |
| | | |
| | | HObject DomainImage = ((HObject)InputImage)?.CopyObj(1, -1); |
| | | //if (!(InputImage is HObject)) |
| | | //{ |
| | | // Msg = "è¾å
¥å¾çç±»åé误,å¿
须为HObjectç±»å"; |
| | | // Result = false; |
| | | // return; |
| | | //} |
| | | |
| | | //HObject DomainImage = ((HObject)InputImage)?.CopyObj(1, -1); |
| | | object DomainImage = null; |
| | | if (!ReduceDomainImage(InputImage, ref DomainImage)) |
| | | { |
| | | Msg = "è£åªåºå失败"; |
| | | Result = false; |
| | | return; |
| | | } |
| | | #endregion |
| | | |
| | | #region ç®åé»è¾ |
| | |
| | | int hv_MaskWidth = Convert.ToInt16(Params.Inputs["æ©è宽"]); |
| | | int hv_MaskHight = Convert.ToInt16(Params.Inputs["æ©èé«"]); |
| | | double hv_Factor = Convert.ToDouble(Params.Inputs["å¢å¼ºå å"]); |
| | | |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | |
| | | Enum.TryParse(Params.Inputs["å¾åå¢å¼ºç±»å"]?.ToString(), out ImageEnhancementType imageEnhancementType); |
| | | string hv_ImageEnhancementType = "scaleMax"; |
| | | switch (imageEnhancementType) |
| | | string hv_ImageEnhancementType = ""; |
| | | foreach (var recordImageEnhancementData in recordImageEnhancementDatas) |
| | | { |
| | | case ImageEnhancementType.Emphasize: |
| | | hv_ImageEnhancementType = "emphasize"; |
| | | switch (recordImageEnhancementData.FilterName) |
| | | { |
| | | case ImageEnhancementDataType.è¾¹ç¼å¢å¼º_ImageEmphasize: |
| | | hv_ImageEnhancementType = "emphasize"; |
| | | hv_MaskWidth = Convert.ToInt16(recordImageEnhancementData.MaskWidth); |
| | | hv_MaskHight = Convert.ToInt16(recordImageEnhancementData.MaskHight); |
| | | hv_Factor = Convert.ToDouble(recordImageEnhancementData.Factor); |
| | | ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_MaskWidth, hv_MaskHight, hv_Factor); |
| | | break; |
| | | case ImageEnhancementDataType.ç´æ¹å¾åè¡¡å_EquHistoImage: |
| | | hv_ImageEnhancementType = "equhisto"; |
| | | ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_MaskWidth, hv_MaskHight, hv_Factor); |
| | | break; |
| | | case ImageEnhancementDataType.æ¯ä¾å¢å¼º_ScaleImageMax: |
| | | hv_ImageEnhancementType = "scaleimageMax"; |
| | | ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_MaskWidth, hv_MaskHight, hv_Factor); |
| | | break; |
| | | default: |
| | | hv_ImageEnhancementType = "scaleImageMax"; |
| | | ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_MaskWidth, hv_MaskHight, hv_Factor); |
| | | break; |
| | | } |
| | | |
| | | break; |
| | | case ImageEnhancementType.EquHisto: |
| | | hv_ImageEnhancementType = "equHisto"; |
| | | |
| | | break; |
| | | case ImageEnhancementType.ScaleMax: |
| | | default: |
| | | hv_ImageEnhancementType = "scaleMax"; |
| | | break; |
| | | } |
| | | double hv_Row1 = Convert.ToDouble(((HSegment)Params.ROI).BeginRow + Params.Fixture.Row); |
| | | double hv_Column1 = Convert.ToDouble(((HSegment)Params.ROI).BeginColumn + Params.Fixture.Column); |
| | | double hv_Row2 = Convert.ToDouble(((HSegment)Params.ROI).EndRow + Params.Fixture.Row); |
| | | double hv_Column2 = Convert.ToDouble(((HSegment)Params.ROI).EndColumn + Params.Fixture.Column); |
| | | |
| | | ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_Column1, hv_Row2, hv_Column2); |
| | | #endregion |
| | | |
| | | |
| | |
| | | cmbImageEnhancement = new ComboBox(); |
| | | btnAdd = new Button(); |
| | | labelImageEnhancement = new Label(); |
| | | btnDel = new Button(); |
| | | tableLayoutPanel5 = new TableLayoutPanel(); |
| | | labelMaskWidth = new Label(); |
| | | labelMaskHeight = new Label(); |
| | |
| | | pnlInputImage.Location = new Point(4, 4); |
| | | pnlInputImage.Margin = new Padding(5); |
| | | pnlInputImage.Name = "pnlInputImage"; |
| | | pnlInputImage.Size = new Size(782, 603); |
| | | pnlInputImage.Size = new Size(768, 603); |
| | | pnlInputImage.TabIndex = 44; |
| | | // |
| | | // TopToolStrip |
| | |
| | | btnRun.Name = "btnRun"; |
| | | btnRun.Size = new Size(43, 24); |
| | | btnRun.Text = "è¿è¡"; |
| | | btnRun.Click += btnRun_Click; |
| | | // |
| | | // btnLoadImage |
| | | // |
| | |
| | | btnLoadImage.Name = "btnLoadImage"; |
| | | btnLoadImage.Size = new Size(43, 24); |
| | | btnLoadImage.Text = "导å¾"; |
| | | btnLoadImage.Click += btnLoadImage_Click; |
| | | // |
| | | // btnSaveParas |
| | | // |
| | |
| | | btnSaveParas.Name = "btnSaveParas"; |
| | | btnSaveParas.Size = new Size(43, 24); |
| | | btnSaveParas.Text = "ä¿å"; |
| | | btnSaveParas.Click += btnSaveParas_Click; |
| | | // |
| | | // btnLoadParas |
| | | // |
| | |
| | | // MainTableLayoutPanel |
| | | // |
| | | MainTableLayoutPanel.ColumnCount = 2; |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40F)); |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F)); |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 41F)); |
| | | MainTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 59F)); |
| | | MainTableLayoutPanel.Controls.Add(parasTabControl, 0, 0); |
| | | MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0); |
| | | MainTableLayoutPanel.Dock = DockStyle.Fill; |
| | |
| | | parasTabControl.Margin = new Padding(4); |
| | | parasTabControl.Name = "parasTabControl"; |
| | | parasTabControl.SelectedIndex = 0; |
| | | parasTabControl.Size = new Size(528, 644); |
| | | parasTabControl.Size = new Size(542, 644); |
| | | parasTabControl.TabIndex = 48; |
| | | // |
| | | // tabPage1 |
| | |
| | | tabPage1.Margin = new Padding(4); |
| | | tabPage1.Name = "tabPage1"; |
| | | tabPage1.Padding = new Padding(4); |
| | | tabPage1.Size = new Size(520, 611); |
| | | tabPage1.Size = new Size(534, 611); |
| | | tabPage1.TabIndex = 0; |
| | | tabPage1.Text = "è¾å
¥åæ°"; |
| | | tabPage1.UseVisualStyleBackColor = true; |
| | |
| | | tableLayoutPanel1.RowCount = 2; |
| | | tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 135F)); |
| | | tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel1.Size = new Size(512, 603); |
| | | tableLayoutPanel1.Size = new Size(526, 603); |
| | | tableLayoutPanel1.TabIndex = 1; |
| | | // |
| | | // dataGridViewIE |
| | | // |
| | | dataGridViewIE.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; |
| | | dataGridViewIE.Dock = DockStyle.Fill; |
| | | dataGridViewIE.Location = new Point(3, 138); |
| | | dataGridViewIE.Name = "dataGridViewIE"; |
| | | dataGridViewIE.RowHeadersWidth = 51; |
| | | dataGridViewIE.Size = new Size(506, 462); |
| | | dataGridViewIE.Size = new Size(520, 462); |
| | | dataGridViewIE.TabIndex = 2; |
| | | // |
| | | // tableLayoutPanel4 |
| | |
| | | tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel4.Controls.Add(tableLayoutPanel3, 0, 0); |
| | | tableLayoutPanel4.Controls.Add(tableLayoutPanel5, 0, 1); |
| | | tableLayoutPanel4.Dock = DockStyle.Fill; |
| | | tableLayoutPanel4.Location = new Point(3, 3); |
| | | tableLayoutPanel4.Name = "tableLayoutPanel4"; |
| | | tableLayoutPanel4.RowCount = 2; |
| | | tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F)); |
| | | tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel4.Size = new Size(506, 125); |
| | | tableLayoutPanel4.Size = new Size(520, 129); |
| | | tableLayoutPanel4.TabIndex = 3; |
| | | // |
| | | // tableLayoutPanel3 |
| | | // |
| | | tableLayoutPanel3.ColumnCount = 3; |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F)); |
| | | tableLayoutPanel3.ColumnCount = 4; |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 172F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel3.Controls.Add(cmbImageEnhancement, 1, 0); |
| | | tableLayoutPanel3.Controls.Add(btnAdd, 2, 0); |
| | | tableLayoutPanel3.Controls.Add(labelImageEnhancement, 0, 0); |
| | | tableLayoutPanel3.Controls.Add(btnDel, 3, 0); |
| | | tableLayoutPanel3.Location = new Point(3, 3); |
| | | tableLayoutPanel3.Name = "tableLayoutPanel3"; |
| | | tableLayoutPanel3.RowCount = 1; |
| | | tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); |
| | | tableLayoutPanel3.Size = new Size(500, 38); |
| | | tableLayoutPanel3.TabIndex = 1; |
| | | tableLayoutPanel3.Size = new Size(514, 38); |
| | | tableLayoutPanel3.TabIndex = 0; |
| | | // |
| | | // cmbImageEnhancement |
| | | // |
| | | cmbImageEnhancement.DropDownStyle = ComboBoxStyle.DropDownList; |
| | | cmbImageEnhancement.FormattingEnabled = true; |
| | | cmbImageEnhancement.Location = new Point(129, 4); |
| | | cmbImageEnhancement.ImeMode = ImeMode.Off; |
| | | cmbImageEnhancement.Location = new Point(89, 4); |
| | | cmbImageEnhancement.Margin = new Padding(4); |
| | | cmbImageEnhancement.Name = "cmbImageEnhancement"; |
| | | cmbImageEnhancement.Size = new Size(242, 28); |
| | | cmbImageEnhancement.Size = new Size(164, 28); |
| | | cmbImageEnhancement.TabIndex = 14; |
| | | cmbImageEnhancement.SelectedIndexChanged += cmbImageEnhancement_SelectedIndexChanged; |
| | | // |
| | | // btnAdd |
| | | // |
| | | btnAdd.Location = new Point(378, 3); |
| | | btnAdd.Location = new Point(260, 3); |
| | | btnAdd.Name = "btnAdd"; |
| | | btnAdd.Size = new Size(119, 30); |
| | | btnAdd.Size = new Size(122, 30); |
| | | btnAdd.TabIndex = 15; |
| | | btnAdd.Text = "æ·»å "; |
| | | btnAdd.UseVisualStyleBackColor = true; |
| | |
| | | labelImageEnhancement.Text = "滤波类å"; |
| | | labelImageEnhancement.TextAlign = ContentAlignment.MiddleCenter; |
| | | // |
| | | // btnDel |
| | | // |
| | | btnDel.Location = new Point(388, 3); |
| | | btnDel.Name = "btnDel"; |
| | | btnDel.Size = new Size(123, 32); |
| | | btnDel.TabIndex = 16; |
| | | btnDel.Text = "å é¤"; |
| | | btnDel.UseVisualStyleBackColor = true; |
| | | btnDel.Click += btnDel_Click; |
| | | // |
| | | // tableLayoutPanel5 |
| | | // |
| | | tableLayoutPanel5.ColumnCount = 4; |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 172F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 85F)); |
| | | tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 172F)); |
| | | tableLayoutPanel5.Controls.Add(labelMaskWidth, 0, 0); |
| | | tableLayoutPanel5.Controls.Add(labelMaskHeight, 2, 0); |
| | | tableLayoutPanel5.Controls.Add(labelFactor, 0, 1); |
| | |
| | | tableLayoutPanel5.RowCount = 2; |
| | | tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); |
| | | tableLayoutPanel5.Size = new Size(500, 74); |
| | | tableLayoutPanel5.TabIndex = 2; |
| | | tableLayoutPanel5.Size = new Size(514, 74); |
| | | tableLayoutPanel5.TabIndex = 1; |
| | | // |
| | | // labelMaskWidth |
| | | // |
| | |
| | | // labelMaskHeight |
| | | // |
| | | labelMaskHeight.AutoSize = true; |
| | | labelMaskHeight.Location = new Point(253, 0); |
| | | labelMaskHeight.Location = new Point(260, 0); |
| | | labelMaskHeight.Name = "labelMaskHeight"; |
| | | labelMaskHeight.Size = new Size(54, 20); |
| | | labelMaskHeight.TabIndex = 1; |
| | |
| | | // |
| | | // txtMaskWidth |
| | | // |
| | | txtMaskWidth.Location = new Point(128, 3); |
| | | txtMaskWidth.Location = new Point(88, 3); |
| | | txtMaskWidth.Name = "txtMaskWidth"; |
| | | txtMaskWidth.Size = new Size(119, 27); |
| | | txtMaskWidth.Size = new Size(166, 27); |
| | | txtMaskWidth.TabIndex = 3; |
| | | // |
| | | // txtMaskHeight |
| | | // |
| | | txtMaskHeight.Location = new Point(378, 3); |
| | | txtMaskHeight.Location = new Point(345, 3); |
| | | txtMaskHeight.Name = "txtMaskHeight"; |
| | | txtMaskHeight.Size = new Size(119, 27); |
| | | txtMaskHeight.Size = new Size(166, 27); |
| | | txtMaskHeight.TabIndex = 4; |
| | | // |
| | | // txtFactor |
| | | // |
| | | txtFactor.Location = new Point(128, 40); |
| | | txtFactor.Location = new Point(88, 40); |
| | | txtFactor.Name = "txtFactor"; |
| | | txtFactor.Size = new Size(119, 27); |
| | | txtFactor.Size = new Size(166, 27); |
| | | txtFactor.TabIndex = 5; |
| | | // |
| | | // tabPage5 |
| | |
| | | tabPage5.Location = new Point(4, 29); |
| | | tabPage5.Margin = new Padding(4); |
| | | tabPage5.Name = "tabPage5"; |
| | | tabPage5.Size = new Size(520, 611); |
| | | tabPage5.Size = new Size(534, 611); |
| | | tabPage5.TabIndex = 2; |
| | | tabPage5.Text = "è¿è¡åæ°"; |
| | | tabPage5.UseVisualStyleBackColor = true; |
| | |
| | | // |
| | | // cmbTypeRoi |
| | | // |
| | | cmbTypeRoi.Enabled = false; |
| | | cmbTypeRoi.FormattingEnabled = true; |
| | | cmbTypeRoi.Location = new Point(81, 4); |
| | | cmbTypeRoi.Margin = new Padding(4); |
| | | cmbTypeRoi.Name = "cmbTypeRoi"; |
| | | cmbTypeRoi.Size = new Size(154, 28); |
| | | cmbTypeRoi.TabIndex = 1; |
| | | cmbTypeRoi.SelectedIndexChanged += cmbTypeRoi_SelectedIndexChanged; |
| | | // |
| | | // label21 |
| | | // |
| | |
| | | ckbDrawRoi.Size = new Size(18, 17); |
| | | ckbDrawRoi.TabIndex = 2; |
| | | ckbDrawRoi.UseVisualStyleBackColor = true; |
| | | ckbDrawRoi.CheckedChanged += ckbDrawRoi_CheckedChanged; |
| | | // |
| | | // imgTabControl |
| | | // |
| | | imgTabControl.Controls.Add(tabPageInputImage); |
| | | imgTabControl.Controls.Add(tabPageRecordImage); |
| | | imgTabControl.Dock = DockStyle.Fill; |
| | | imgTabControl.Location = new Point(540, 4); |
| | | imgTabControl.Location = new Point(554, 4); |
| | | imgTabControl.Margin = new Padding(4); |
| | | imgTabControl.Name = "imgTabControl"; |
| | | imgTabControl.SelectedIndex = 0; |
| | | imgTabControl.Size = new Size(798, 644); |
| | | imgTabControl.Size = new Size(784, 644); |
| | | imgTabControl.TabIndex = 49; |
| | | // |
| | | // tabPageInputImage |
| | |
| | | tabPageInputImage.Margin = new Padding(4); |
| | | tabPageInputImage.Name = "tabPageInputImage"; |
| | | tabPageInputImage.Padding = new Padding(4); |
| | | tabPageInputImage.Size = new Size(790, 611); |
| | | tabPageInputImage.Size = new Size(776, 611); |
| | | tabPageInputImage.TabIndex = 0; |
| | | tabPageInputImage.Text = "è¾å
¥å¾å"; |
| | | tabPageInputImage.UseVisualStyleBackColor = true; |
| | |
| | | tabPageRecordImage.Margin = new Padding(4); |
| | | tabPageRecordImage.Name = "tabPageRecordImage"; |
| | | tabPageRecordImage.Padding = new Padding(4); |
| | | tabPageRecordImage.Size = new Size(790, 611); |
| | | tabPageRecordImage.Size = new Size(776, 611); |
| | | tabPageRecordImage.TabIndex = 1; |
| | | tabPageRecordImage.Text = "ç»æå¾å"; |
| | | tabPageRecordImage.UseVisualStyleBackColor = true; |
| | |
| | | pnlRecordImage.Location = new Point(4, 4); |
| | | pnlRecordImage.Margin = new Padding(5); |
| | | pnlRecordImage.Name = "pnlRecordImage"; |
| | | pnlRecordImage.Size = new Size(782, 603); |
| | | pnlRecordImage.Size = new Size(768, 603); |
| | | pnlRecordImage.TabIndex = 45; |
| | | // |
| | | // HImageEnhancementToolEdit |
| | |
| | | Margin = new Padding(3, 4, 3, 4); |
| | | Name = "HImageEnhancementToolEdit"; |
| | | Size = new Size(1342, 705); |
| | | Load += HImageEnhancementToolEdit_Load; |
| | | TopToolStrip.ResumeLayout(false); |
| | | TopToolStrip.PerformLayout(); |
| | | BtmStatusStrip.ResumeLayout(false); |
| | |
| | | private TableLayoutPanel tableLayoutPanel5; |
| | | private Label labelMaskWidth; |
| | | private Label labelMaskHeight; |
| | | private Label labelFactor; |
| | | private TextBox txtMaskWidth; |
| | | private TextBox txtMaskHeight; |
| | | private Label labelFactor; |
| | | private TextBox txtFactor; |
| | | private Button btnDel; |
| | | } |
| | | } |
| | |
| | | using LB_SmartVisionCommon; |
| | | using LB_VisionControl; |
| | | using LB_VisionProcesses.Alogrithms.Halcon; |
| | | using Microsoft.VisualBasic.ApplicationServices; |
| | | using OpenCvSharp; |
| | | using Sunny.UI.Win32; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement; |
| | | |
| | | namespace LB_VisionProcesses.Alogrithms.Halcon |
| | | { |
| | | public partial class HImageEnhancementToolEdit : TAlgorithmEdit |
| | | { |
| | | |
| | | List<RecordImageEnhancementData> recordImageEnhancementDatas = new List<RecordImageEnhancementData>(); |
| | | private int rowriginalHeight; |
| | | public HImageEnhancementToolEdit(HImageEnhancementTool subject = null) |
| | | { |
| | |
| | | else |
| | | Subject = new HImageEnhancementTool(); |
| | | |
| | | if (!(Subject.Params.ROI is HSegment)) |
| | | Subject.Params.ROI = new HSegment(0, 0, 250, 250); |
| | | |
| | | // ä¿ååå§è¡é«åº¦ |
| | | rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; |
| | | //if (!(Subject.Params.ROI is HSegment)) |
| | | // Subject.Params.ROI = new HSegment(0, 0, 250, 250); |
| | | |
| | | this.Dock = DockStyle.Fill; |
| | | InitializeComponent(); |
| | | // ä¿ååå§è¡é«åº¦ |
| | | rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; |
| | | |
| | | InitializeComboBox(); |
| | | InitializeDataGridView(); |
| | | |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | private void InitializeComboBox() |
| | | { |
| | | //// æ·»å æéé项 |
| | | //foreach (var item in Enum.GetValues(typeof(UserPermission))) |
| | | //{ |
| | | // cmbImageEnhancement.Items.Add(item.ToString()); |
| | | //} |
| | | cmbImageEnhancement.Items.Add("emphasizeè¾¹ç¼å¢å¼º"); |
| | | cmbImageEnhancement.Items.Add("equ_histo_imageç´æ¹å¾åè¡¡å"); |
| | | cmbImageEnhancement.Items.Add("scale_image_maxæ¯ä¾å¢å¼º"); |
| | | // æ·»å æéé项 |
| | | foreach (var item in Enum.GetValues(typeof(ImageEnhancementDataType))) |
| | | { |
| | | cmbImageEnhancement.Items.Add(item.ToString()); |
| | | } |
| | | |
| | | // 设置é»è®¤éæ©é¡¹ |
| | | cmbImageEnhancement.SelectedIndex = 2; |
| | | } |
| | | #region å¾åå¢å¼ºç®æ³éæ©ä¸ææ¡ |
| | | #region ç®æ³éæ©ä¸ææ¡ |
| | | private void cmbImageEnhancement_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | ComboBox cb = sender as ComboBox; |
| | | System.Windows.Forms.ComboBox cb = sender as System.Windows.Forms.ComboBox; |
| | | |
| | | if (cb.SelectedIndex == 0) |
| | | { |
| | | ShowRow(); |
| | | } |
| | | else if (cb.SelectedIndex == 1) |
| | | { |
| | | HideRow(); |
| | | } |
| | | else |
| | | { |
| | | HideRow(); |
| | | } |
| | |
| | | #endregion |
| | | private void InitializeDataGridView() |
| | | { |
| | | //this.dataGridViewIE.DataSource = recordUserDatas; |
| | | |
| | | // è®¾ç½®åæ é¢ |
| | | dataGridViewIE.Columns[0].Name = "滤波å¨ç±»å"; |
| | | dataGridViewIE.Columns[1].Name = "æ©è宽度"; |
| | | dataGridViewIE.Columns[2].Name = "æ©èé«åº¦"; |
| | | dataGridViewIE.Columns[3].Name = "å¢å¼ºå å"; |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | |
| | | // 设置DataGridViewå宽 |
| | | dataGridViewIE.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; |
| | |
| | | cmbTypeRoi.Items.Add(value.ToString()); |
| | | |
| | | //éåå¯ä»¥éæ©çå¾åå¢å¼ºç±»åæä¸¾ |
| | | foreach (var value in Enum.GetValues(typeof(ImageEnhancementType))) |
| | | cmbImageEnhancement.Items.Add(value.ToString()); |
| | | //foreach (var value in Enum.GetValues(typeof(ImageEnhancementType))) |
| | | // cmbImageEnhancement.Items.Add(value.ToString()); |
| | | |
| | | //éåå¯ä»¥éæ©çFixtureæä¸¾ |
| | | cmbFixture.Items.Add(""); |
| | |
| | | |
| | | ckbDrawRoi.Checked = true; |
| | | cmbTypeRoi.Text = RoiType.Segment.ToString(); |
| | | cmbImageEnhancement.Text = Transition.Ignore.ToString(); |
| | | cmbImageEnhancement.Text = ImageEnhancementType.ScaleMax.ToString(); |
| | | LoadParas(); |
| | | |
| | | if (Subject.Result) |
| | |
| | | lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg); |
| | | lblRunTime.Text = $"{Subject.RunTime}ms"; |
| | | } |
| | | private void ClearInputFields() |
| | | { |
| | | txtMaskWidth.Clear(); |
| | | txtMaskHeight.Clear(); |
| | | txtFactor.Clear(); |
| | | cmbImageEnhancement.SelectedIndex = 0; |
| | | } |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | // éªè¯è¾å
¥ |
| | | if (cmbImageEnhancement.SelectedIndex == 0) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text) || string.IsNullOrWhiteSpace(txtFactor.Text)) |
| | | { |
| | | MessageBox.Show("è¯·å¡«åææå¿
å¡«åæ®µï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | RecordImageEnhancementData filter = new RecordImageEnhancementData(); |
| | | filter.MaskWidth = this.txtMaskWidth.Text; |
| | | filter.MaskHight = this.txtMaskHeight.Text; |
| | | filter.Factor = this.txtFactor.Text; |
| | | filter.FilterName = (ImageEnhancementDataType)this.cmbImageEnhancement.SelectedIndex; |
| | | // æ·»å å° UserManager |
| | | bool success = ImageEnhancementManager.Instance.AddUser(filter); |
| | | if (success) |
| | | { |
| | | recordImageEnhancementDatas.Add(filter); |
| | | //MessageBox.Show("ç¨æ·æ·»å æåï¼", "æç¤º", |
| | | // MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | |
| | | // æ¸
空è¾å
¥æ¡ |
| | | ClearInputFields(); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("æ·»å ç¨æ·å¤±è´¥ï¼", "é误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | |
| | | private void btnDel_Click(object sender, EventArgs e) |
| | | { |
| | | // æ£æ¥æ¯å¦æéä¸ç滤波类å |
| | | if (cmbImageEnhancement.SelectedIndex < 0) |
| | | { |
| | | MessageBox.Show("è¯·éæ©è¦å é¤ç滤波类åï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | try |
| | | { |
| | | DataGridViewRow selectedRow = dataGridViewIE.SelectedRows[0]; |
| | | string filterToDel = selectedRow.Cells[0].Value?.ToString(); |
| | | |
| | | ImageEnhancementDataType filterToDelete = (ImageEnhancementDataType)cmbImageEnhancement.SelectedIndex; |
| | | |
| | | // æ¥æ¾å¯¹åºçè®°å½ |
| | | RecordImageEnhancementData filterToRemove = null; |
| | | |
| | | // 仿¬å°åè¡¨ä¸æ¥æ¾ |
| | | foreach (var filter in recordImageEnhancementDatas) |
| | | { |
| | | if (filter.FilterName.ToString() == filterToDel) |
| | | { |
| | | filterToRemove = filter; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (filterToRemove == null) |
| | | { |
| | | MessageBox.Show("æªæ¾å°å¯¹åºçè®°å½ï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Warning); |
| | | return; |
| | | } |
| | | |
| | | // 确认å é¤ |
| | | DialogResult result = MessageBox.Show( |
| | | $"ç¡®å®è¦å é¤ '{filterToDel}' è®°å½åï¼", |
| | | "确认å é¤", |
| | | MessageBoxButtons.YesNo, |
| | | MessageBoxIcon.Question, |
| | | MessageBoxDefaultButton.Button2); // é»è®¤éæ©"å¦" |
| | | |
| | | if (result == DialogResult.No) |
| | | return; |
| | | |
| | | // ä»ç®¡çå¨ä¸å é¤ |
| | | bool success = ImageEnhancementManager.Instance.DeleteUser(filterToRemove); |
| | | |
| | | if (success) |
| | | { |
| | | // 仿¬å°å表ä¸å é¤ |
| | | recordImageEnhancementDatas.Remove(filterToRemove); |
| | | |
| | | MessageBox.Show("å 餿åï¼", "æç¤º", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("å é¤å¤±è´¥ï¼", "é误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | recordImageEnhancementDatas = ImageEnhancementManager.Instance.GetAllUsers(); |
| | | this.dataGridViewIE.DataSource = recordImageEnhancementDatas; |
| | | this.dataGridViewIE.AutoGenerateColumns = true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show("è¯·éæ©è¦å é¤çç®å"); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æ´æ°è¿è¡åæ° |
| | | /// </summary> |
| | |
| | | } |
| | | })); |
| | | } |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | switch (cmbImageEnhancement.SelectedIndex) |
| | | { |
| | | case 0: |
| | | |
| | | break; |
| | | case 1: |
| | | |
| | | break; |
| | | case 2: |
| | | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | #region å·¥å
·æ æé®äºä»¶ |
| | | /// <summary> |
| | | /// ç¹å»è¿è¡ |
| | | /// </summary> |
| | |
| | | GC.Collect(); |
| | | })); |
| | | } |
| | | #region å·¥å
·æ æé®äºä»¶ |
| | | |
| | | /// <summary> |
| | | /// å·¥å
·æ â导å¾â |
| | | /// </summary> |
| | |
| | | } |
| | | catch { } |
| | | } |
| | | #endregion |
| | | |
| | | public override void cmbFixture_SelectedIndexChanged(object sender, EventArgs e) |
| | | { |
| | | try |
| | |
| | | } |
| | | catch { } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | theme_AlgorithmForm.Font = new Font("Microsoft Sans Serif", 9F); |
| | | theme_AlgorithmForm.Image = (Image)resources.GetObject("theme_AlgorithmForm.Image"); |
| | | theme_AlgorithmForm.Location = new Point(0, 0); |
| | | theme_AlgorithmForm.Margin = new Padding(4); |
| | | theme_AlgorithmForm.Name = "theme_AlgorithmForm"; |
| | | theme_AlgorithmForm.Padding = new Padding(10, 70, 10, 9); |
| | | theme_AlgorithmForm.Padding = new Padding(12, 88, 12, 11); |
| | | theme_AlgorithmForm.RoundCorners = true; |
| | | theme_AlgorithmForm.Sizable = true; |
| | | theme_AlgorithmForm.Size = new Size(944, 601); |
| | | theme_AlgorithmForm.Size = new Size(1366, 751); |
| | | theme_AlgorithmForm.SmartBounds = true; |
| | | theme_AlgorithmForm.StartPosition = FormStartPosition.WindowsDefaultLocation; |
| | | theme_AlgorithmForm.TabIndex = 0; |
| | |
| | | pnl_ProcessEditForm.BackColor = Color.FromArgb(39, 51, 63); |
| | | pnl_ProcessEditForm.Dock = DockStyle.Fill; |
| | | pnl_ProcessEditForm.EdgeColor = Color.FromArgb(32, 41, 50); |
| | | pnl_ProcessEditForm.Location = new Point(10, 70); |
| | | pnl_ProcessEditForm.Location = new Point(12, 88); |
| | | pnl_ProcessEditForm.Margin = new Padding(4); |
| | | pnl_ProcessEditForm.Name = "pnl_ProcessEditForm"; |
| | | pnl_ProcessEditForm.Padding = new Padding(5); |
| | | pnl_ProcessEditForm.Size = new Size(924, 522); |
| | | pnl_ProcessEditForm.Padding = new Padding(6); |
| | | pnl_ProcessEditForm.Size = new Size(1342, 652); |
| | | pnl_ProcessEditForm.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality; |
| | | pnl_ProcessEditForm.TabIndex = 1; |
| | | // |
| | |
| | | controlB_ProcessEditForm.EnableMaximizeButton = false; |
| | | controlB_ProcessEditForm.EnableMinimizeButton = false; |
| | | controlB_ProcessEditForm.ForeColor = Color.FromArgb(155, 155, 155); |
| | | controlB_ProcessEditForm.Location = new Point(844, 18); |
| | | controlB_ProcessEditForm.Location = new Point(1241, 18); |
| | | controlB_ProcessEditForm.Margin = new Padding(4); |
| | | controlB_ProcessEditForm.MaximizeHoverColor = Color.FromArgb(74, 74, 74); |
| | | controlB_ProcessEditForm.MinimizeHoverColor = Color.FromArgb(63, 63, 65); |
| | | controlB_ProcessEditForm.Name = "controlB_ProcessEditForm"; |
| | |
| | | // |
| | | // ProcessEditForm |
| | | // |
| | | AutoScaleDimensions = new SizeF(96F, 96F); |
| | | AutoScaleDimensions = new SizeF(120F, 120F); |
| | | AutoScaleMode = AutoScaleMode.Dpi; |
| | | ClientSize = new Size(944, 601); |
| | | ClientSize = new Size(1366, 751); |
| | | Controls.Add(theme_AlgorithmForm); |
| | | FormBorderStyle = FormBorderStyle.None; |
| | | MinimumSize = new Size(261, 61); |
| | | Margin = new Padding(4); |
| | | MinimumSize = new Size(326, 76); |
| | | Name = "ProcessEditForm"; |
| | | Text = "AlgorithmForm"; |
| | | TransparencyKey = Color.Fuchsia; |
| | |
| | | <data name="theme_AlgorithmForm.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
| | | <value> |
| | | iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO |
| | | wAAADsABataJCQAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou |
| | | BkVBUPCBCEG8BXNQ48GLeImCehIJxMsqhsSZruod46K4HtSIGjU+4iOr0c1I9fSsM3/PLNtCPO0H36m/ |
| | | evz/X11VnreKVRTAHPOZumkY6lFwqURws3BwZ8ywTQnuiCP/+iTCzY1qaUPzdm/Atf3PaHre6XPsjyQM |
| | | 2xLGV4XwIyX4QRj+UMK/lPFvJTyhBMeV8IgQvmRJuH4Ko+l5p9UjGBbCJ5RxTgj+VMZmXxKcSAjekHE/ |
| | | NNs5DgaTKLinEQYVO4Trf1mkV81wixLUslPmA3bzF2XcKeP+hWY/u3n0fCXcrQwLyjAvjNsb1dI6N05P |
| | | mFAIHlHG73sEypPgGwnhfpn0zzH7jzddcK4Q7kqfKNMI4a9K+MwBDgbdeF04MBWsFYYdQvhbLlBvfhKT |
| | | f+vMtLfG7C0JJXxKGY67WnvCmPAFGRs7z42boul5AzHBfdK6TjdQtzPGk8oos5F/5Y7sfVvPhg+lp+1h |
| | | 0yIsxARPmtaN78WEl8eEX+SNclxUhne0glUrNrN9zfMGlPAuZTzaQ99FYfwuDv3ruoLvq5bWaQSvZCfL |
| | | GXUYLwrj240Qxtu2lkSN4FpdWfKZH9jb9RQ1Cq62f9sVOlxUxn3KQXnJ0PO8QxU/jBm1h74v7ZniEG9K |
| | | Hdg/quzvXO709k0Y3u08ucGqWgheX862H4XgxbR47SqU8D1X0EXC2VmGizqDz0xPr0kYH9eO360gNe0b |
| | | jWppozB+1kOQEb5MCLa0C64NoeGrhOGrvH6lhK81GiIvnggmrDLzgvTkvwvDA+5wsU4nhG/m9AUoBD/F |
| | | HFzWN4H0XQn2vF8eXN8Z3FAPYasl59oUYjuB+sTImDB+nhfgYQ39STf4fmu1DHtz+oIUgiM1KkWtwcFw |
| | | sOujVT3hrnaL7UQc+hcL5W+sKIXhw0OVjaW0iwnBc47gqIQ45QY32PKRzv8eTguRYM9SS5YouEEZjv37 |
| | | EffbzbjBDdZyxZYQ12EB2qS0bWrJqRVazPDWkojwZbuZrsgZtDJ0iY1g12khEtTicMTvclwn2CKE32YJ |
| | | 7G5PORfZ1HtMCH7MOV4BrQ3XCe92+4onk5Nn2PolDAvWXnuOzAwzo6Nnx4Q3SrojwqfKeMxWMpsXWVs+ |
| | | 2WrfKRdbW1W6Hf0shM/33Y7my4PrleFZIfhAaWjU/e5ivlw+y3S2FySMtynjvcrwsFiLJv/RhPBB2ws1 |
| | | hK2WcBLBFf1qawlplwvxaQlxe786OOU4PBWsjSO85mBlQ8n99r/BisSdAas4FfgHpdEUZpwUX7sAAAAA |
| | | SUVORK5CYII= |
| | | vgAADr4B6kKxwAAAA+xJREFUWEftV0loFUkYbvcNFzJi0lWdBEPQruqXKEYdcRgz4AYqeplBwYiXEUVB |
| | | UHAhCEG8iR509OBlmIsOjJ5EBvQSRVHzuvslxjAy8eCG+75GozF+f716L6873fqe2ykffDR59e9/1V8V |
| | | ow99KARtUg72J5aypGNN8xy2yJPWcleylb5gS13HnJdy+KSW6uJx3b8ZA7TKl6PbMPq3SbMsBUcpyf/2 |
| | | BP8PDh96kr32BX/rS/4O30789grfO1j/k4LQ6p8POO6XdFgpDNbDSZsn2Bt8u2MpWGdKsCPeBNMm3TZp |
| | | FaUc6/cW20pQEtpsflCllmwxjDbpLKOd9vAZuBPOx5J+86TyMdDbBxsdYLsn+SpUZYQy/imQILLdBIP3 |
| | | cxzEU7Dbns3WejXmcNK/NPGHkajabtUiLYO/nyOgXWdRFeUkDmdnWMOg2ACFFwEn8fzfFeaSxlpjIOlT |
| | | EHC0HVm/CstSC13B93sVFaOVszDQpwGuYGtQLipnQDlMyLzH12t2zJ8adH/TbeMbVLYROmmyDvjYRrLK |
| | | aS4Q3Y/gtWjFALtg6KSf4NW02Uj3HwSPzOuw9iAk24sI/p5rm3OV0wyOo+++ww7pzCIViVjvAk+02GyC |
| | | VlWnpUmw2Qggn+AV0eZ/A61oEtYsOttRwjlE5vy4L61KrabQmjBtV3I/JPtRUptcmy9UBuiM+tLc+bHs |
| | | aQ1Rn8rNnEC7Gpvr8KcqF0XoHVCbl0qB8p2OEspS8OZmySZrvwqNtbUDMRm3Yj9kj1uB9NXcwLkfjwyu |
| | | RAhoshuYcHMyGy4DT5T+jKrcjNbJh+yW75QIw62yqhDAvUghwV/Cybrw5UKTDn08GqmTJ9GCx660pscG |
| | | oPoq2MHzlUWjtN8skjZbRsGFdQpiJoBkVVkFnF3tLcCv+7ZZo31mcYZGLY5RL/kCiQrcaRLFTvrikOxc |
| | | YJF2PeZ5ZsTmAkNkCtaiW1YAkcTF1sT4YjXFEM3ekMADz+YztM8AULqlqE5nSL5wor3Zkew51nxU4WnP |
| | | Ij9DlVGLIWCtDhV6FzBWIJH9a3pNaZOGQRsNT6tjWSHB/6LK6OUA/ETJVER/O9dgwcQ7w7XLTG0yjSTO |
| | | Onp7Ny3A92VuuTD0rbcFbXsUMJonaQwnBV8Rniu4y2sGYbEe5emA8cORV6ZGY3n5UNycC9AKvBHZZRh+ |
| | | iqxoX9BlRWMZozvLLiSEV5V6HT2Bjz9iX0ftaAWE9sDoBV+UlOufY9FeWTmE5OhdgLH8Kxyvhv5GON3q |
| | | C3NzSvD19C70MTco4JTDZsbtrSzUlLP5DnBV3D745riOp5nr8F/OJcYV65++P2iTfNV/MPoQCcP4AKXR |
| | | FGYxo/VGAAAAAElFTkSuQmCC |
| | | </value> |
| | | </data> |
| | | <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |
| | | <value>True</value> |
| | | </metadata> |
| | | </root> |