public void FindConnectedComponentsTest() { Imaging.Image image = new Imaging.Image(20, 35, 1, 200, 200); // 0 0 0 0 0 // 0 x 0 x 0 // 0 x x x 0 // 0 x 0 x 0 // 0 0 0 0 0 image.SetPixel(1, 1, 1); image.SetPixel(3, 1, 1); image.SetPixel(1, 2, 1); image.SetPixel(2, 2, 1); image.SetPixel(3, 2, 1); image.SetPixel(1, 3, 1); image.SetPixel(3, 3, 1); ISet <ConnectedComponent> components = image.FindConnectedComponents(8); Assert.AreEqual(1, components.Count); ConnectedComponent component = components.First(); Assert.AreEqual(new Rectangle(1, 1, 3, 3), component.Bounds); Assert.AreEqual(7, component.Power); (int y, int x, int length)[] strokes = component.EnumStrokes().ToArray();
private void EncodedImageVisualizationObject_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(this.EncodedImageVisualizationObject.CurrentValue)) { Imaging.Image psiImage = null; if (this.EncodedImageVisualizationObject.CurrentValue.HasValue) { var resource = this.EncodedImageVisualizationObject.CurrentValue.Value.Data.Resource; this.lastKnownImageWidth = resource.Width; this.lastKnownImageHeight = resource.Height; this.lastKnownPixelFormat = ImageDecoder.GetPixelFormat(resource); psiImage = new Imaging.Image(this.lastKnownImageWidth, this.lastKnownImageHeight, this.lastKnownPixelFormat); ImageDecoder.DecodeTo(resource, psiImage); } else { psiImage = new Imaging.Image(this.lastKnownImageWidth, this.lastKnownImageHeight, this.lastKnownPixelFormat); } if (this.EncodedImageVisualizationObject.Configuration.HorizontalFlip) { if (psiImage != null) { var bitmap = psiImage.ToManagedImage(true); bitmap.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipX); // we dispose the new Shared object here because UpdateImage increments its ref count using (var sharedImage = Shared.Create(Imaging.Image.FromManagedImage(bitmap))) { this.DisplayImage.UpdateImage(sharedImage); } } else { this.DisplayImage.UpdateImage(null); } } else { // we dispose the new Shared object here because UpdateImage increments its ref count using (var sharedImage = Shared.Create(psiImage)) { this.DisplayImage.UpdateImage(sharedImage); } } } }
/// <inheritdoc /> /// <exception cref="ArgumentNullException"> /// <paramref name="image"/> is <b>null</b>. /// </exception> public Features Detect(Imaging.Image image, CancellationToken cancellationToken) { if (image == null) { throw new ArgumentNullException(nameof(image)); } DenseVectorPackF vectors = image.HOG( this.CellSize, this.BlockSize, this.BlockStride, this.NumberOfBins, this.Threshold); vectors = DenseVectorPackF.Pack(vectors.Unpack().Where(x => x.Sum() != 0.0f).ToList()); return(new Features(vectors)); }
/// <summary> /// Processes the <see cref="Imaging.Image"/>. /// </summary> /// <param name="image">The <see cref="Imaging.Image"/> to process.</param> /// <param name="pageSegmentationMode">The page segmentation mode.</param> /// <returns> /// The <see cref="PageShape"/> object this method creates. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="image"/> is <b>null</b>. /// </exception> public PageShape Recognize(Imaging.Image image, PageSegmentationMode pageSegmentationMode) { using (Pix pix = Pix.FromImage(image)) { ////Clear(); ////NativeMethods.TessBaseAPIClear(this.handle); ////ClearPersistentCache(); ////NativeMethods.TessBaseAPIClearPersistentCache(this.handle); ////ClearAdaptiveClassifier(); ////NativeMethods.TessBaseAPIClearAdaptiveClassifier(this.handle); NativeMethods.TessBaseAPISetImage2(this.handle, pix.Handle); NativeMethods.TessBaseAPISetPageSegMode(this.handle, pageSegmentationMode); NativeMethods.TessBaseAPIRecognize(this.handle, IntPtr.Zero); return(this.ExtractResults(image.Bounds, image.HorizontalResolution, image.VerticalResolution)); } }
private void EncodedImageVisualizationObject_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(this.EncodedImageVisualizationObject.CurrentValue)) { Imaging.Image psiImage = null; if (this.EncodedImageVisualizationObject.CurrentValue.HasValue) { var resource = this.EncodedImageVisualizationObject.CurrentValue.Value.Data.Resource; this.lastKnownImageWidth = resource.Width; this.lastKnownImageHeight = resource.Height; this.lastKnownPixelFormat = resource.GetPixelFormat(); psiImage = new Imaging.Image(this.lastKnownImageWidth, this.lastKnownImageHeight, this.lastKnownPixelFormat); resource.DecodeTo(psiImage); } else { psiImage = new Imaging.Image(this.lastKnownImageWidth, this.lastKnownImageHeight, this.lastKnownPixelFormat); } if (this.EncodedImageVisualizationObject.Configuration.HorizontalFlip) { if (psiImage != null) { var bitmap = psiImage.ToManagedImage(true); bitmap.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipX); this.DisplayImage.UpdateImage(Imaging.Image.FromManagedImage(bitmap)); } else { this.DisplayImage.UpdateImage((Imaging.Image)null); } } else { this.DisplayImage.UpdateImage(psiImage); } } }