public override void Work() { progress = 0; ICommImage socket = _in[0] as ICommImage; IImage[] img = socket.Images; IImage[] ret = new IImage[img.Length]; if(splithalf) for(int i=0; i<img.Length; i++) { ret[i] = SplitHistogram(img[i]); progress = (float)i/img.Length; } else for(int i=0; i<img.Length; i++) { ret[i] = Histogram(img[i]); progress = (float)i/img.Length; } _out = new CommSocket(1); _out[0] = new ICommImage(ret, socket.OriginalImages, socket.Categories); _workdone = true; }
public override void Work() { progress = 0; if (_fl.Count == 0) { throw new PluginException(Catalog.GetString("No images in list")); } int i = 0; IImage[] imgarray = new IImage[_fl.Count]; int[] categories = new int[_fl.Count]; foreach (string fn in _fl) { Gdk.Pixbuf buf = new Gdk.Pixbuf(fn); imgarray[i] = IImage.Create(buf, Utility.IsBW(buf) ? BPP.Grayscale : BPP.RGB); categories[i] = i; i++; progress = (float)i / _fl.Count; } _out = new CommSocket(1); _out[0] = new ICommImage(imgarray, imgarray, categories); _workdone = true; }
public override void Work() { progress = 0; ICommImage socket = _in[0] as ICommImage; IImage[] img = socket.Images; IImage[] res1 = new IImage[img.Length]; IImage[] res2 = new IImage[img.Length]; IImage[] res3 = new IImage[img.Length]; for (int i = 0; i < img.Length; i++) { IImage[] rgb = Split(img[i]); res1[i] = rgb[0]; res2[i] = rgb[1]; res3[i] = rgb[2]; progress = (float)i / img.Length; } _out = new CommSocket(3); _out[0] = new ICommImage(res1, socket.OriginalImages, socket.Categories); _out[1] = new ICommImage(res2, socket.OriginalImages, socket.Categories); _out[2] = new ICommImage(res3, socket.OriginalImages, socket.Categories); _workdone = true; }
public override void Work() { progress = 0; ICommImage socket = _in[0] as ICommImage; IImage[] img = socket.Images; IImage[] ret = new IImage[img.Length * 2]; int[] cat = new int[img.Length * 2]; IImage[] origimg = new IImage[img.Length * 2]; for (int i = 0; i < img.Length; i++) { ret[i * 2] = img[i]; ret[i * 2 + 1] = MirrorImage(img[i]); cat[i * 2] = socket.Category(i); cat[i * 2 + 1] = socket.Category(i); origimg[i * 2] = socket.OriginalImage(i); origimg[i * 2 + 1] = socket.OriginalImage(i); progress = (float)i / img.Length; } _out = new CommSocket(1); _out[0] = new ICommImage(ret, origimg, cat); _workdone = true; }
public override void Work() { ICommImage socket = (ICommImage)_in[0]; IImage[] img = socket.Images; IImage[] orig = socket.OriginalImages; images = new Gdk.Pixbuf[img.Length]; thumbs = new Gdk.Pixbuf[img.Length]; cat = socket.Categories; double scale; for (int i = 0; i < img.Length; i++) { IImage _img = new IImage(orig[i].BPP, orig[i].W, orig[i].H, orig[i].Data); images[i] = HistogramGraph(img[i]); Gdk.Pixbuf pixbuf = _img.CreatePixbuf(); if (_img.W > _img.H) { scale = _img.W / 64.0; } else { scale = _img.H / 64.0; } thumbs[i] = pixbuf.ScaleSimple(Scale(_img.W, scale), Scale(_img.H, scale), Gdk.InterpType.Bilinear); } _workdone = true; }
public override void Work() { progress = 0; ICommImage socket = _in[0] as ICommImage; IImage[] i1 = socket.Images; IImage[] i2 = new IImage[i1.Length]; for (int i = 0; i < i1.Length; i++) { Gdk.Pixbuf buf = i1[i].CreatePixbuf(); Gdk.Pixbuf bufout = buf.ScaleSimple(i1[i].W / 2, i1[i].H / 2, mode); i2[i] = IImage.Create(bufout, i1[i].BPP); progress = (float)i / i1.Length; } _out = new CommSocket(1); _out[0] = new ICommImage(i2, socket.OriginalImages, socket.Categories); _workdone = true; }
public override void Work() { ICommImage socket = _in[0] as ICommImage; _out = new CommSocket(1); _out[0] = new ICommImage(socket.Images, socket.Images, socket.Categories); _workdone = true; }
public override void Work() { tasks.Clear(); bool MultiThreading = Eithne.Config.Get("engine/blockthreads", false); ICommImage socket1 = _in[0] as ICommImage; ICommImage socket2 = _in[1] as ICommImage; IImage[] img1 = socket1.Images; IImage[] img2 = socket2.Images; _out = new CommSocket(1); IResult[] res = new IResult[img2.Length]; totalImages = img1.Length * img2.Length; if (MultiThreading) { TaskInfo ti1 = new TaskInfo(res, img1, img2, delta, 0, img2.Length / 2); TaskInfo ti2 = new TaskInfo(res, img1, img2, delta, img2.Length / 2, img2.Length); tasks.Add(ti1); tasks.Add(ti2); Thread t1 = new Thread(ti1.TaskWork); Thread t2 = new Thread(ti2.TaskWork); t1.Start(); t2.Start(); t1.Join(); t2.Join(); } else { TaskInfo t = new TaskInfo(res, img1, img2, delta, 0, img2.Length); tasks.Add(t); t.TaskWork(); } _out[0] = new ICommResult(res, 0, socket1.OriginalImages, socket2.OriginalImages, socket1.Categories, socket2.Categories); tasks.Clear(); _workdone = true; }
public override void Work() { ICommImage socket = _in[0] as ICommImage; IImage[] img = socket.Images; IImage[] res = new IImage[img.Length]; _out = new CommSocket(1); for (int i = 0; i < img.Length; i++) { res[i] = Desaturate(img[i]); } _out[0] = new ICommImage(res, socket.OriginalImages, socket.Categories); _workdone = true; }
public override void Work() { progress = 0; ICommImage socket = _in[0] as ICommImage; IImage[] img = socket.Images; IImage[] res = new IImage[img.Length]; _out = new CommSocket(1); for (int i = 0; i < img.Length; i++) { res[i] = DCT(img[i]); progress = (float)i / img.Length; } _out[0] = new ICommImage(res, socket.OriginalImages, socket.Categories); FFTW.Cleanup(); _workdone = true; }
public override void Work() { ICommImage socket = (ICommImage)_in[0]; IImage[] img = socket.Images; images = new Gdk.Pixbuf[img.Length]; thumbs = new Gdk.Pixbuf[img.Length]; cat = socket.Categories; double scale; for (int i = 0; i < img.Length; i++) { IImage _img = new IImage(img[i].BPP, img[i].W, img[i].H, img[i].Data, invert); if (invert) { _img.Invert(); } images[i] = _img.CreatePixbuf(); if (_img.W > _img.H) { scale = _img.W / 64.0; } else { scale = _img.H / 64.0; } thumbs[i] = images[i].ScaleSimple(Scale(_img.W, scale), Scale(_img.H, scale), Gdk.InterpType.Bilinear); } _workdone = true; }
public override void Work() { taskListMutex.WaitOne(); tasks.Clear(); taskListMutex.ReleaseMutex(); if (cat.Count == 0) { throw new PluginException(Catalog.GetString("No categories in list")); } bool MultiThreading = Eithne.Config.Get("engine/blockthreads", false); ArrayList test_cl = new ArrayList(); ArrayList test_il = new ArrayList(); ArrayList base_cl = new ArrayList(); ArrayList base_il = new ArrayList(); for (int i = 0; i < cat.Count; i++) { foreach (Img img in (cat[i] as Category).Files) { if (img.IsTest) { test_cl.Add(i); test_il.Add(img.Name); } else { base_cl.Add(i); base_il.Add(img.Name); } } } if (test_il.Count == 0) { throw new PluginException(Catalog.GetString("There are no test images selected")); } if (base_il.Count == 0) { throw new PluginException(Catalog.GetString("There are no base images selected")); } int[] test_categories = (int[])test_cl.ToArray(typeof(int)); int[] base_categories = (int[])base_cl.ToArray(typeof(int)); IImage[] test_imgarray = new IImage[test_il.Count]; IImage[] base_imgarray = new IImage[base_il.Count]; totalImages = test_il.Count + base_il.Count; if (MultiThreading) { // test TaskInfo ti1 = new TaskInfo(test_imgarray, test_il, 0, test_il.Count / 2); TaskInfo ti2 = new TaskInfo(test_imgarray, test_il, test_il.Count / 2, test_il.Count); taskListMutex.WaitOne(); tasks.Add(ti1); tasks.Add(ti2); taskListMutex.ReleaseMutex(); Thread t1 = new Thread(ti1.TaskWork); Thread t2 = new Thread(ti2.TaskWork); t1.Start(); t2.Start(); t1.Join(); t2.Join(); int t1progress = ti1.Progress; int t2progress = ti2.Progress; // base ti1 = new TaskInfo(base_imgarray, base_il, 0, base_il.Count / 2, t1progress); ti2 = new TaskInfo(base_imgarray, base_il, base_il.Count / 2, base_il.Count, t2progress); taskListMutex.WaitOne(); tasks.Clear(); tasks.Add(ti1); tasks.Add(ti2); taskListMutex.ReleaseMutex(); t1 = new Thread(ti1.TaskWork); t2 = new Thread(ti2.TaskWork); t1.Start(); t2.Start(); t1.Join(); t2.Join(); } else { TaskInfo t = new TaskInfo(test_imgarray, test_il, 0, test_il.Count); tasks.Add(t); t.TaskWork(); t = new TaskInfo(base_imgarray, base_il, 0, base_il.Count); t.TaskWork(); } _out = new CommSocket(2); _out[0] = new ICommImage(base_imgarray, base_imgarray, base_categories); _out[1] = new ICommImage(test_imgarray, test_imgarray, test_categories); taskListMutex.WaitOne(); tasks.Clear(); taskListMutex.ReleaseMutex(); _workdone = true; }