• Stars
    star
    313
  • Rank 133,714 (Top 3 %)
  • Language
    C#
  • Created over 9 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Minimalistic .NET imaging portable platform

DotImaging logo

NuGet packages version

DotImaging - .NET array as imaging object
The framework sets focus on .NET native array as primary imaging object, offers extensibility support via extensions, and provides unified platform-abstract imaging IO API.

News

  • 5.2.0 version came out (19/02/2019)
  • Image enchacement library for DotImaging: DotDevignetting!

So why DotImaging ?

  • Image as native .NET 2D array
  • portable*
  • lightweight
  • extensions, extensions, extensions....

*IO and Drawing assemlies depend on OpenCV

Libraries / NuGet packages

Core
  • DotImaging.Image .NET image array extensions. Color and depth conversions. Slim unmanaged structure for fast pixel manipulation.

    Tutorial: Portable Generic Image

//convert to grayscale and flip
Bgr<byte>[,] image = ImageIO.LoadColor("sample.jpg"); //IO package
Gray<byte>[,] grayIm = image.ToGray()
                            .Flip(FlipDirection.Horizontal);

//get the modified blue channel 
var modifiedImage = image.AsEnumerable()
                    .Select(x => x.B / 2)
   		 .ToArray2D(image.Size());
  • DotImaging.Primitives2D Portable 2D drawing primitives (Extensions for Point, Size, Rectangle and additional primitives)
IO
  • DotImaging.IO A unified API for IO image access (camera, file, image directory). Portable image loading/saving.

    Tutorial: Portable Imaging IO

var reader = new FileCapture("sample.mp4");
reader.Open();

Bgr<byte>[,] frame = null;
while(true)
{
      reader.ReadTo(ref frame);
      if (frame == null)
         break;

      frame.Show(scaleForm: true); //UI package
}

reader.Close();
  • DotImaging.IO.Web Image or video download/streaming (direct video link or Youtube links).
//------get an image from the Web
new Uri("http://vignette3.wikia.nocookie.net/disney/images/5/5d/Lena_headey_.jpg")
    .GetBytes().DecodeAsColorImage().Show(); //(Show - UI package)

//------stream a video from Youtube
var pipeName = new Uri("https://www.youtube.com/watch?v=Vpg9yizPP_g").NamedPipeFromYoutubeUri(); //Youtube
var reader = new FileCapture(String.Format(@"\\.\pipe\{0}", pipeName)) //IO package

//... (regular stream reading - see IO package sample)
Interoperability
  • DotImaging.BitmapInterop Interoperability extensions between .NET array and System.Drawing.Bitmap.
var image = new Gray<byte>[240, 320];
var bmp = image.ToBitmap(); //to Bitmap

var imageFromBmp = bmp.ToArray() as Bgr<byte>[,]; //from Bitmap
Extensions
  • DotImaging.UI Image preview dialog and drawing.
Bgr<byte>[,] image = new Bgr<byte>[480, 640];
image.Show(); //show image (non-blocking)
image.ShowDialog(); //show image (blocking)

//draw something
image.Draw(new Rectangle(50, 50, 200, 100), Bgr<byte>.Red, -1);
image.Draw(new Circle(50, 50, 25), Bgr<byte>.Blue, 5);

Getting started

  • Just pick what you need. An appropriate readme file will be shown upon selected NuGet package installation.
  • Samples

Final word

If you like the project please star it in order to help to spread the word. That way you will make the framework more significant and in the same time you will motivate me to improve it, so the benefit is mutual.