Example #1
0
        public static BitmapSourceInfo GetBitmapSourceInfoWithRgb32(BitmapSource bitmapSource)
        {
            var info = new BitmapSourceInfo()
                       {
                           DpiX = bitmapSource.DpiX,
                           DpiY = bitmapSource.DpiY,
                           Stride = bitmapSource.PixelWidth*1,
                           PixelWidth = bitmapSource.PixelWidth,
                           PixelHeight = bitmapSource.PixelHeight,
                           PixelFormat = bitmapSource.Format,
                       };

            var buffer = new byte[info.Stride*info.PixelHeight];
            bitmapSource.CopyPixels(buffer, info.Stride, 0);
            info.Buffer = buffer;
            return info;
        }
Example #2
0
        private void Inspect(InspectionSchema schema)
        {
            //IndicatorViewer.Loaded += (sender, args) => IndicatorViewer.ZoomFit();
            //                        IndicatorViewer.Loaded += (sender, args) => IndicatorViewer.ZoomOut();

            RegionIndicators.Clear();
            LineIndicators.Clear();
            CircleIndicators.Clear();
            DefectIndicators.Clear();
            ObjectIndicators.Clear();

            BitmapSource bs;

            try
            {
                bs = new BitmapImage(new Uri(schema.TestImageFilePath, UriKind.RelativeOrAbsolute));
            }
            catch (FileNotFoundException e)
            {
                throw new HalconInspectorException("Image file not exist", e);
            }

            if (Math.Abs(bs.DpiX - 96) > 0.00001 || Math.Abs(bs.DpiY - 96) > 0.00001)
            {
                var sw1 = new NotifyStopwatch("BitmapSource convert to Dpi96");
                BitmapSourceInfo bsi = bs.ToGray8BppBitmapSourceInfo();
                bsi.DpiX = 96;
                bsi.DpiY = 96;
                var bitmapSourceDpi96 = bsi.GetBitmapSource();
                bs = bitmapSourceDpi96;
                sw1.Stop();
                sw1.Dispose();
            }

            IndicatorViewer.BitmapSource = bs;

            var sw2    = new NotifyStopwatch("BitmapSource.ToHImage()");
            var hImage = bs.ToHImage();

            sw2.Stop();
            sw2.Dispose();


            try
            {
                var sw = new NotifyStopwatch("InspectionController.Inspect()");
                InspectionController
                .SetInspectionSchema()
                .SetImage(hImage)
                .CreateCoordinate()
                .Inspect()
                ;
                sw.Stop();
                sw.Dispose();

                // CoordinateCircles
                Show_CircleSearchingDefinitions(
                    InspectionController.InspectionResult.GetCoordinateCircleSearchingDefinitions());
                Show_CircleSearchingResults(InspectionController.InspectionResult.CoordinateCircles);

                // Circles
                Show_CircleSearchingDefinitions(
                    InspectionController.InspectionResult.GetCircleSearchingDefinitions(), Brushes.Orange);
                Show_CircleSearchingResults(InspectionController.InspectionResult.Circles, Brushes.DodgerBlue);

                // CoordinateEdges
                Show_EdgeSearchingDefinitions(InspectionController.InspectionResult.GetCoordinateEdges());
                Show_EdgeSearchingResults(InspectionController.InspectionResult.CoordinateEdges);

                // Edges
                Show_EdgeSearchingDefinitions(InspectionController.InspectionResult.GetEdgeSearchingDefinitions());
                Show_EdgeSearchingResults(InspectionController.InspectionResult.Edges);

                // DistanceBetweenPoints
                Show_DistanceBetweenPointsResults(InspectionController.InspectionResult.DistanceBetweenPointsResults);

                // Defects
                Show_DefectResults(InspectionController.InspectionResult.RegionDefectResults);

                // Parts
                Show_PartSearchingDefinitions(InspectionController.InspectionResult.GetPartSearchingDefinitions());
                Show_PartSearchingResults(InspectionController.InspectionResult.Parts);

                // RegionTargets
                Show_RegionTargetDefinitions(InspectionController.InspectionResult.GetRegionTargetDefinitions());
                Show_RegionTargetResults(InspectionController.InspectionResult.RegionTargets);
            }
            catch (CreateCoordinateFailedException e)
            {
                Show_CircleSearchingDefinitions(
                    InspectionController.InspectionResult.GetCoordinateCircleSearchingDefinitions());
                Show_CircleSearchingResults(InspectionController.InspectionResult.CoordinateCircles);

                Show_EdgeSearchingDefinitions(InspectionController.InspectionResult.GetCoordinateEdges());
                Show_EdgeSearchingResults(InspectionController.InspectionResult.CoordinateEdges);

                MessageBox.Show(e.Message);
            }
        }