Procházet zdrojové kódy

修改深度学习少拍一次照
修改深度学习显示图片为彩图

KWD před 3 měsíci
rodič
revize
d91adc8d21

+ 13 - 4
TeamAAS-VM/Controls/ParameterEdit.xaml.cs

@@ -41,14 +41,23 @@ namespace TeamAAS_VP.Controls
         }
 
 
-        private ObservableCollection<ProductGlobalParam> _GlobalParamListCollection;
         /// <summary>
-        /// 产品全局参数集合
+        /// 产品全局参数集合 依赖属性(支持外部 Binding)
+        /// </summary>
+        public static readonly DependencyProperty GlobalParamListCollectionProperty =
+            DependencyProperty.Register(
+                nameof(GlobalParamListCollection),
+                typeof(ObservableCollection<ProductGlobalParam>),
+                typeof(ParameterEdit),
+                new PropertyMetadata(new ObservableCollection<ProductGlobalParam>()));
+
+        /// <summary>
+        /// 公开可绑定属性
         /// </summary>
         public ObservableCollection<ProductGlobalParam> GlobalParamListCollection
         {
-            get { return _GlobalParamListCollection; }
-            set { SetProperty(ref _GlobalParamListCollection, value); }
+            get => (ObservableCollection<ProductGlobalParam>)GetValue(GlobalParamListCollectionProperty);
+            set => SetValue(GlobalParamListCollectionProperty, value);
         }
 
         private DelegateCommand _AddCommand;

+ 5 - 1
TeamAAS-VM/Core/ImageHelper.cs

@@ -68,11 +68,15 @@ namespace TeamAAS_VP.Core
         public static ICogImage MatConvertICogImage(Mat image, bool color = false)
         {
             var im = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
-            ICogImage cogImage = new CogImage8Grey(im);
+            ICogImage cogImage = null;
             if (color)
             {
                 cogImage = new CogImage24PlanarColor(im);
             }
+            else
+            {
+                cogImage = new CogImage8Grey(im);
+            }
             im.Dispose();
             return cogImage;
         }

+ 16 - 1
TeamAAS-VM/Core/Management.cs

@@ -1969,7 +1969,6 @@ namespace TeamAAS_VP.Core
                                     await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPickStatus.Address, (Int16)2);
                                     return;
                                 }
-
                             }
 
                             if (cameraIndex == currentProduct.PhotoCount)
@@ -2404,11 +2403,20 @@ namespace TeamAAS_VP.Core
                                         return;
                                     }
                                     await ExecuteProcedureAsync(cameraIndex, prcId, tt.imges, Is3dPhoto, currentProduct);
+                                    if (targetPoint.AiVision == 1)
+                                    {
+                                        var targetPoint2 = currentProduct.AoiPoints?.FirstOrDefault(p => p.Number == targetPoint.AiVision);
+                                        await ExecuteProcedureAsync(targetPoint.AiVision, targetPoint2.CameraProcedureId1, tt.imges, Is3dPhoto, currentProduct);
+                                    }
                                 }
                                 else
                                 {
                                     bool Is3dPhoto = Is3D(prcId);
                                     _ImageTaskList.Add(GrabImageEx(cameraIndex, prcId, Is3dPhoto, currentProduct, sysConfig));
+                                    if (targetPoint.AiVision == 1)
+                                    {
+                                        break;
+                                    }
                                 }
 
                                 if (sysConfig.TurnOnAllLightUse == false)
@@ -2434,6 +2442,11 @@ namespace TeamAAS_VP.Core
                                         if (item.IsSucceed)
                                         {
                                             bool Is3d = Is3D(item.procedureId);
+                                            if (targetPoint.AiVision == 1)
+                                            {
+                                                var targetPoint2 = currentProduct.AoiPoints?.FirstOrDefault(p => p.Number == cameraIndex);
+                                                await ExecuteProcedureAsync(targetPoint.AiVision, targetPoint2.CameraProcedureId2, item.Images, Is3d, currentProduct);
+                                            }
                                             await ExecuteProcedureAsync(item.cameraIndex, item.procedureId, item.Images, Is3d, currentProduct);
                                         }
                                         else
@@ -2483,12 +2496,14 @@ namespace TeamAAS_VP.Core
                                 {
                                     SendTaskMessage($"检测执行成功", MessageLevel.Debug);
                                     await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPickStatus.Address, (Int16)1);
+                                    return;
                                 }
                                 //存在NG
                                 else
                                 {
                                     SendTaskMessage($"检测执行失败", MessageLevel.Alarm);
                                     await plc.WriteNodeAsync(addressConfig.Out_FixedCameraPickStatus.Address, (Int16)2);
+                                    return;
                                 }
                             }
                             return;

+ 8 - 0
TeamAAS-VM/Models/PLC/PlcPoint.cs

@@ -422,6 +422,12 @@ namespace TeamAAS_VP.Models.PLC
             set { SetProperty(ref _Description, value); }
         }
 
+        private Int16 _AiVision;
+        public Int16 AiVision
+        {
+            get { return _AiVision; }
+            set { SetProperty(ref _AiVision, value); }
+        }
         public PlcPoint()
         {
             Number = 0;
@@ -457,6 +463,7 @@ namespace TeamAAS_VP.Models.PLC
             Enable_Light2 = 0;
             Enable_Light3 = 0;
             Enable_Light4 = 0;
+            AiVision = 0;
 
 
 
@@ -483,6 +490,7 @@ namespace TeamAAS_VP.Models.PLC
                 Y_Velocity_Stop = this.Y_Velocity_Stop,
                 Z_Position_Start = this.Z_Position_Start,
                 Z_Velocity_Start = this.Z_Velocity_Start,
+                AiVision = this.AiVision,
                 Z_Position_Stop = this.Z_Position_Stop,
                 Z_Velocity_Stop = this.Z_Velocity_Stop,
                 U_Position_Start = this.U_Position_Start,

+ 10 - 9
TeamAAS-VM/Services/RemoteCommandService.cs

@@ -2029,11 +2029,11 @@ namespace TeamAAS_VP.Services
                                 // 定义颜色映射
                                 var colors = new[]
                                 {
-                            Scalar.Red,      // NG1 - 红色
-                            Scalar.Green,    // NG2 - 绿色
-                            Scalar.Blue,     // NG3 - 蓝色
-                            Scalar.Yellow    // NG4 - 黄色
-                        };
+                                    Scalar.Red,      // NG1 - 红色
+                                    Scalar.Green,    // NG2 - 绿色
+                                    Scalar.Blue,     // NG3 - 蓝色
+                                    Scalar.Yellow    // NG4 - 黄色
+                                };
 
                                 foreach (var det in results)
                                 {
@@ -2091,7 +2091,7 @@ namespace TeamAAS_VP.Services
                                 }
 
                                 // 关键:这里转成彩色 ICogImage
-                                var yoloColorCogImage = ImageHelper.MatConvertICogImage(image2);
+                                var yoloColorCogImage = ImageHelper.MatConvertICogImage(image2,true);
 
                                 // 模板检测如果需要原图,可以用 imges[0]
                                 // 如果你希望模板也拿 YOLO 画框图,就用 yoloColorCogImage
@@ -2133,7 +2133,8 @@ namespace TeamAAS_VP.Services
                                     Id = procedure.DisplayId,
                                     DisplayName = procedure.DisplayName,
 
-                                    Image = OriginyoloColorCogImage,
+                                    // 显示和保存用 YOLO 彩色图
+                                    Image = yoloColorCogImage,
 
                                     Graphic = outputCollection["Graphic"].Value as CogGraphicCollection,
                                     Record = record,
@@ -2154,8 +2155,7 @@ namespace TeamAAS_VP.Services
                                     Id = procedure.DisplayId,
                                     DisplayName = procedure.DisplayName,
 
-                                    // 显示和保存用 YOLO 彩色图
-                                    Image = yoloColorCogImage,
+                                    Image = OriginyoloColorCogImage,
 
                                     Graphic = outputCollection["Graphic"].Value as CogGraphicCollection,
                                     Record = record,
@@ -2171,6 +2171,7 @@ namespace TeamAAS_VP.Services
                                     Is3DModel = is3dmodel,
                                 });
 
+
                             }
 
                         }

+ 25 - 0
TeamAAS-VM/Views/Product/PlcPointParams.xaml

@@ -1754,6 +1754,31 @@
                                             </DataTemplate>
                                         </DataGridTemplateColumn.CellEditingTemplate>
                                     </DataGridTemplateColumn>
+                                    <!--启用深度学习-->
+                                    <DataGridTemplateColumn Header="启用启用深度学习"
+                                                    MinWidth="60"
+                                                    Width="Auto">
+                                        <DataGridTemplateColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <TextBlock Text="{Binding AiVision, StringFormat={}{0:F0}}"
+                                                    HorizontalAlignment="Center"
+                                                    VerticalAlignment="Center" />
+                                            </DataTemplate>
+                                        </DataGridTemplateColumn.CellTemplate>
+                                        <DataGridTemplateColumn.CellEditingTemplate>
+                                            <DataTemplate>
+                                                <mah:NumericUpDown Value="{Binding AiVision, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+                                                    Minimum="0"
+                                                    Maximum="9999.000"
+                                                    Interval="1"
+                                                    StringFormat="F3"
+                                                    HorizontalAlignment="Stretch"
+                                                    VerticalAlignment="Center"
+                                                    Margin="0"
+                                                    Padding="2" />
+                                            </DataTemplate>
+                                        </DataGridTemplateColumn.CellEditingTemplate>
+                                    </DataGridTemplateColumn>
                                     <!-- 左上相机对应的视觉流程选择 -->
                                     <DataGridTemplateColumn Header="2D相机1视觉流程"
                                         MinWidth="150"

+ 1 - 1
TeamAAS-VM/Views/Product/ProductParams.xaml

@@ -73,7 +73,7 @@
                                    x:Name="DrawerHost"
                                    IsEnabled="{Binding IsAllowEdit}">
             <materialDesign:DrawerHost.RightDrawerContent>
-                <uControl:ParameterEdit x:Name="parameterEdit"/>
+                <uControl:ParameterEdit x:Name="parameterEdit" GlobalParamListCollection="{Binding SelectProduct.GlobalParamListCollection}"/>
             </materialDesign:DrawerHost.RightDrawerContent>
 
             <Grid>

+ 1 - 1
TeamAAS-VM/Views/Product/ProductParams.xaml.cs

@@ -21,7 +21,7 @@ namespace TeamAAS_VP.Views.Product
         {
             if (VM != null)
             {
-                if (VM.SelectProduct.GlobalParamListCollection==null)
+                if (VM.SelectProduct.GlobalParamListCollection == null)
                 {
                     VM.SelectProduct.GlobalParamListCollection = new System.Collections.ObjectModel.ObservableCollection<ProductGlobalParam>();
                 }