/// <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)); } }
public void TestMethod1() { Stopwatch stopwatch = new Stopwatch(); ImageSegmentation segmentation = new ImageSegmentation(); ////foreach ((Image image, int? frameIndex, _) in Imaging.Image.FromFile(@"D:\source.bmp")) ////foreach ((Image image, _, _) in Imaging.Image.FromFile(@"C:\Users\Alexander\Desktop\hcfa.png")) ////foreach ((Image image, _, _) in Imaging.Image.FromFile(@"C:\Users\Alexander\Desktop\07227200002.tif")) foreach ((Image image, int?frameIndex, _) in Imaging.Image.FromFile(@"L:\FormXtra\HCFA\BW\SET1\07227200002.tif")) ////foreach ((Image image, int? frameIndex, _) in Imaging.Image.FromFile(@"C:\Users\avolgunin\Desktop\hcfa.png")) ////foreach ((Image image, _, _) in Image.FromFile(@"C:\DNN\dnn\test4.jpg")) { Image xxx = image.ConvertTo(null, 1).CleanOverscan(0.5f, 0.5f).Deskew(null).Despeckle(null); Image yyy = xxx.CreateTemplate(null, xxx.BitsPerPixel); ////LineDetector.FindLines(xxx, new LineDetectionOptions()); /*Pix pix = Pix.FromImage(xxx);*/ ////int[] a = new int[10000]; ////for (int kw = 49; kw <= 49; kw++) { ////xxx.Dilate(yyy, StructuringElement.Brick(1, kw), 1, BorderType.BorderConst, 0); ////pix.DilateGray(1, kw); ////Pix pix = Pix.FromImage(image); stopwatch.Restart(); for (int i = 0; i < 1; i++) { segmentation.Segment(xxx, null, CancellationToken.None); ////xxx.Binarize(yyy, 0, 0, 0, 0, true, 0, 0); ////Statistic.Smooth(a.Length, a, 0); ////pix.DilateGray(1, kw); ////xxx.Convert8To1(yyy, 128); ////xxx.Dilate(yyy, StructuringElement.Brick(1, kw), 1, BorderType.BorderConst, 0); ////xxx.Dilate3x3(yyy, BorderType.BorderConst, 0); ////xxx.Dilate(yyy, StructuringElement.Brick(3, 3), 1, BorderType.BorderConst, 0); } #if false stopwatch.Restart(); for (int i = 0; i < 10; i++) { workImage.FindConnectedComponents(8); } ////workImage.DistanceToBackground(4, 8); stopwatch.Stop(); Console.WriteLine("{0:F4} ms", stopwatch.ElapsedMilliseconds /* / Count*/); using (Pix pixComp = Pix.FromImage(workImage)) { stopwatch.Restart(); using (Pix pixDist = pixComp.DistanceFunction(4, 8, 1)) { } stopwatch.Stop(); Console.WriteLine("{0:F4} ms", stopwatch.ElapsedMilliseconds /* / Count*/); } #endif /*workImage = workImage.CleanOverscan(0.5f, 0.5f).Deskew(null).Despeckle(null); * workImage.SetResolution(300, 300); * ISet<LineShape> components = LineDetector.FindLines(workImage, new LineDetectionOptions());*/ stopwatch.Stop(); ////Console.WriteLine("{0}: {1:F4} ms", kw, stopwatch.ElapsedMilliseconds/* / Count*/); Console.WriteLine("{0:F4} ms", stopwatch.ElapsedMilliseconds /* / Count*/); } Console.WriteLine(segmentation.PrintPerformanceReport(1)); } }