Exemple #1
0
            public static GenericImageConstructor Create <TColor>()
                where TColor : struct, IColor
            {
                GenericImageConstructor ctor = new GenericImageConstructor();

                ctor.ColorType = typeof(TColor);

                ctor.ToImage = (iplImage, destructor) =>
                {
                    if (destructor != null)
                    {
                        return(new Image <TColor>(iplImage.ImageData, iplImage.Width, iplImage.Height, iplImage.WidthStep, iplImage, destructor));
                    }
                    else
                    {
                        return(new Image <TColor>(iplImage.ImageData, iplImage.Width, iplImage.Height, iplImage.WidthStep, iplImage));
                    }
                };

                return(ctor);
            }
Exemple #2
0
        static ImageOpenCVImageConversions()
        {
            colorAssociations = new Dictionary <Type, IplColorInfo>();

            //Gray
            colorAssociations.Add(typeof(Gray <sbyte>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_8S));
            colorAssociations.Add(typeof(Gray <byte>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_8U));
            colorAssociations.Add(typeof(Gray <short>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_16S));
            colorAssociations.Add(typeof(Gray <ushort>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_16U));
            colorAssociations.Add(typeof(Gray <int>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_32S));
            colorAssociations.Add(typeof(Gray <float>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_32F));
            colorAssociations.Add(typeof(Gray <double>), new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_64F));

            //Color2 - TODO ??

            //Bgr
            colorAssociations.Add(typeof(Bgr <sbyte>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_8S));
            colorAssociations.Add(typeof(Bgr <byte>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_8U));
            colorAssociations.Add(typeof(Bgr <short>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_16S));
            colorAssociations.Add(typeof(Bgr <ushort>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_16U));
            colorAssociations.Add(typeof(Bgr <int>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_32S));
            colorAssociations.Add(typeof(Bgr <float>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_32F));
            colorAssociations.Add(typeof(Bgr <double>), new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_64F));

            //Bgra
            colorAssociations.Add(typeof(Bgra <sbyte>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_8S));
            colorAssociations.Add(typeof(Bgra <byte>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_8U));
            colorAssociations.Add(typeof(Bgra <short>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_16S));
            colorAssociations.Add(typeof(Bgra <ushort>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_16U));
            colorAssociations.Add(typeof(Bgra <int>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_32S));
            colorAssociations.Add(typeof(Bgra <float>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_32F));
            colorAssociations.Add(typeof(Bgra <double>), new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_64F));
            /****************************************************************************************/


            colorConstructorPairs = new Dictionary <IplColorInfo, GenericImageConstructor>();

            //Gray
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_8S), GenericImageConstructor.Create <Gray <sbyte> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_8U), GenericImageConstructor.Create <Gray <byte> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_16S), GenericImageConstructor.Create <Gray <short> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_16U), GenericImageConstructor.Create <Gray <ushort> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_32S), GenericImageConstructor.Create <Gray <int> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_32F), GenericImageConstructor.Create <Gray <float> >());
            colorConstructorPairs.Add(new IplColorInfo(1, IplImage.IplChannelDepth.IPL_DEPTH_64F), GenericImageConstructor.Create <Gray <double> >());

            //Color2 - TODO

            //Bgr
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_8S), GenericImageConstructor.Create <Bgr <sbyte> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_8U), GenericImageConstructor.Create <Bgr <byte> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_16S), GenericImageConstructor.Create <Bgr <short> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_16U), GenericImageConstructor.Create <Bgr <ushort> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_32S), GenericImageConstructor.Create <Bgr <int> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_32F), GenericImageConstructor.Create <Bgr <float> >());
            colorConstructorPairs.Add(new IplColorInfo(3, IplImage.IplChannelDepth.IPL_DEPTH_64F), GenericImageConstructor.Create <Bgr <double> >());

            //Bgra
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_8S), GenericImageConstructor.Create <Bgra <sbyte> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_8U), GenericImageConstructor.Create <Bgra <byte> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_16S), GenericImageConstructor.Create <Bgra <short> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_16U), GenericImageConstructor.Create <Bgra <ushort> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_32S), GenericImageConstructor.Create <Bgra <int> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_32F), GenericImageConstructor.Create <Bgra <float> >());
            colorConstructorPairs.Add(new IplColorInfo(4, IplImage.IplChannelDepth.IPL_DEPTH_64F), GenericImageConstructor.Create <Bgra <double> >());
        }