示例#1
0
        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;
        }
示例#2
0
        private Gdk.Pixbuf HistogramGraph(IImage img)
        {
            IImage graph = new IImage(BPP.Grayscale, img.W, 260);

            graph.Clear((byte)255);

            for (int i = 0; i < img.W; i++)
            {
                int hval = (byte)img[i, 0];

                for (int j = 0; j < hval; j++)
                {
                    graph[i, 255 - j] = (byte)0;
                }

                for (int j = 0; j < 3; j++)
                {
                    graph[i, 259 - j] = (byte)((i * 255) / img.W);
                }
            }

            return(graph.CreatePixbuf());
        }
示例#3
0
        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;
        }
示例#4
0
        public override void Work()
        {
            ICommResult r = _in[0] as ICommResult;

            int[] res    = r.FindResultsSimple();
            int   numcat = FindNumCategories(r.TestCategories);

            cat = new Category[numcat + 1];
            for (int i = 0; i < numcat + 1; i++)
            {
                cat[i] = new Category();
            }

            total   = r.Length;
            matched = 0;

            for (int i = 0; i < r.Length; i++)
            {
                int tc = r.TestCategory(i);
                int bc = r.BaseCategory(res[i]);

                cat[tc].total++;

                if (cat[tc].image == null)
                {
                    double scale;
                    IImage img = null;

                    for (int j = 0; j < r.OriginalBaseImages.Length; j++)
                    {
                        if (r.BaseCategory(j) == tc)
                        {
                            img = r.OriginalBaseImages[j];
                            if (first)
                            {
                                break;
                            }
                        }
                    }

                    if (img == null)
                    {
                        cat[tc].image = new Gdk.Pixbuf(Assembly.GetEntryAssembly(), "no-base.png");
                    }
                    else
                    {
                        if (img.W > img.H)
                        {
                            scale = img.W / 48.0;
                        }
                        else
                        {
                            scale = img.H / 48.0;
                        }

                        Gdk.Pixbuf tmp = img.CreatePixbuf();
                        cat[tc].image = tmp.ScaleSimple(Scale(img.W, scale), Scale(img.H, scale),
                                                        Gdk.InterpType.Bilinear);
                    }
                }

                if (tc == bc && r.Match[i])
                {
                    cat[tc].matched++;
                    matched++;
                }
            }

            _workdone = true;
        }
示例#5
0
        public override void Work()
        {
            ICommResult r = _in[0] as ICommResult;

            itest = new Gdk.Pixbuf[r.Length];
            ibase = new Gdk.Pixbuf[r.OriginalBaseImages.Length];

            double scale;

            for (int i = 0; i < itest.Length; i++)
            {
                IImage img = r.OriginalTestImages[i];

                if (img.W > img.H)
                {
                    scale = img.W / 32.0;
                }
                else
                {
                    scale = img.H / 32.0;
                }

                Gdk.Pixbuf tmp = img.CreatePixbuf();
                itest[i] = tmp.ScaleSimple(Scale(img.W, scale), Scale(img.H, scale), Gdk.InterpType.Bilinear);
            }

            for (int i = 0; i < ibase.Length; i++)
            {
                IImage img = r.OriginalBaseImages[i];

                if (img.W > img.H)
                {
                    scale = img.W / 32.0;
                }
                else
                {
                    scale = img.H / 32.0;
                }

                Gdk.Pixbuf tmp = img.CreatePixbuf();
                ibase[i] = tmp.ScaleSimple(Scale(img.W, scale), Scale(img.H, scale), Gdk.InterpType.Bilinear);
            }

            res = new IResult[r.Length];
            for (int i = 0; i < r.Length; i++)
            {
                res[i] = r[i];
            }

            match = r.FindResultsSimple();

            for (int i = 0; i < r.Length; i++)
            {
                if (!r.Match[i])
                {
                    match[i] = -1;
                }
            }

            _workdone = true;
        }
示例#6
0
        public override void Work()
        {
            ICommResult r = _in[0] as ICommResult;

            itest  = new Gdk.Pixbuf[r.Length];
            thumbs = new Gdk.Pixbuf[r.Length];
            ibase  = new Gdk.Pixbuf[r.OriginalBaseImages.Length];

            double scale;

            for (int i = 0; i < itest.Length; i++)
            {
                IImage _img = r.OriginalTestImages[i];
                IImage img  = new IImage(_img.BPP, _img.W, _img.H, _img.Data, invert);

                if (invert)
                {
                    img.Invert();
                }

                if (img.W > img.H)
                {
                    scale = img.W / 256.0;
                }
                else
                {
                    scale = img.H / 256.0;
                }

                Gdk.Pixbuf tmp = img.CreatePixbuf();
                itest[i] = tmp.ScaleSimple(Scale(img.W, scale), Scale(img.H, scale), Gdk.InterpType.Bilinear);

                if (img.W > img.H)
                {
                    scale = img.W / 64.0;
                }
                else
                {
                    scale = img.H / 64.0;
                }

                thumbs[i] = itest[i].ScaleSimple(Scale(img.W, scale), Scale(img.H, scale), Gdk.InterpType.Bilinear);
            }

            for (int i = 0; i < ibase.Length; i++)
            {
                IImage _img = r.OriginalBaseImages[i];
                IImage img  = new IImage(_img.BPP, _img.W, _img.H, _img.Data, invert);

                if (invert)
                {
                    img.Invert();
                }

                if (img.W > img.H)
                {
                    scale = img.W / 256.0;
                }
                else
                {
                    scale = img.H / 256.0;
                }

                Gdk.Pixbuf tmp = img.CreatePixbuf();
                ibase[i] = tmp.ScaleSimple(Scale(img.W, scale), Scale(img.H, scale), Gdk.InterpType.Bilinear);
            }

            res = r.FindResultsSimple();

            cat1 = r.BaseCategories;
            cat2 = r.TestCategories;

            match = r.Match;

            _workdone = true;
        }