Skip to content

Latest commit

 

History

History
152 lines (110 loc) · 5.66 KB

README.md

File metadata and controls

152 lines (110 loc) · 5.66 KB

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.

So why DotImaging ?

  • leverages existing .NET structures
  • portable*
  • lightweight
  • so simple, you don't need a help file

*IO and Drawing assemlies depend on OpenCV

Libraries / NuGet packages

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

reader.SaveFrames(outputDir, "{0}.jpg", (percentage) =>
{
      Console.Write("\r Extracting video: {0} %", percentage * 100);
});

reader.Close();
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
reader.Open();

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

    frame.Show(scaleForm: true); //show the frame (UI package)
}
while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape));

reader.Close();
//create a managed image
var image = new Bgr<byte>[480, 640];

//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);
var image = new Gray<byte>[240, 320];
var bmp = image.ToBitmap(); //to Bitmap

var imageFromBmp = bmp.ToArray() as Bgr<byte>[,]; //from Bitmap
var bmp = new BitmapImage(new Uri("<path>"));
Bgra<byte>[,] colorImg = bmp.ToArray<Bgra<byte>>(); //to bitmap

var imageFromBitmap = colorImg.ToBitmapSource(); //from bitmap
  • DotImaging.UI
    Portable UI elements (image display, progress bar, open-save file dialogs, folder-selection dialog, color-picker).
Bgr<byte>[,] image = new Bgr<byte>[480, 640];
image.Show(); //show image (non-blocking)

(0.4d).Progress(); //progress bar - 40% (non-blocking)

string fileName = UI.OpenFile(); //open-file dialog

Bgr<byte> color = UI.PickColor(); //color picker dialog

Gray<byte>[,] mask = image.GetMask(); //get user-defined mask dialog 
//create a managed image
Bgr<byte>[,] image = ...; 

//get the modified blue channel 
var modifiedImage = image.AsEnumerable()
                            .Select(x => x.B / 2)
   						 .ToArray2D(image.Size());

Getting started

  • Just pick what you need. An appropriate readme file will be shown upon selected NuGet package installation.
  • Each project in "Source" has a short readme
  • Samples

Want image processing algorithms ?

The framework is the foundation of Accord.NET Extensions which exposes a full power of Accord.NET through extensions!

How to Engage, Contribute and Provide Feedback

Remember: Your opinion is important and will define the future roadmap.

  • questions, comments - message on Github, or write to: darko.juric2 [at] gmail.com
  • spread the word

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.