public static <T extends ImageBase> T createImage(Class<T> type, int width, int height, int numBands ) { if( (Class)type == Planar.class ) throw new IllegalArgumentException("Can't use this function with planar because the data type needs to be specified too"); if( ImageGray.class.isAssignableFrom(type)) return (T)createSingleBand((Class)type,width,height); else if( ImageInterleaved.class.isAssignableFrom(type)) return (T)createInterleaved((Class)type,width,height,numBands); else throw new RuntimeException("Unknown"); } public static <T extends ImageGray<T>> T createSingleBand(Class<T> type, int width, int height) {
public static <T extends ImageInterleaved> T createInterleaved(ImageDataType type, int width, int height , int numBands) { Class<T> typeClass = ImageType.getImageClass(ImageType.Family.INTERLEAVED, type); return (T)createInterleaved(typeClass,width,height,numBands); }
/** * Creates a new image. * * @param width Number of columns in the image. * @param height Number of rows in the image. * @return New instance of the image. */ public T createImage( int width , int height ) { switch( family ) { case GRAY: return (T)GeneralizedImageOps.createSingleBand(getImageClass(),width,height); case INTERLEAVED: return (T)GeneralizedImageOps.createInterleaved(getImageClass(), width, height, numBands); case PLANAR: return (T)new Planar(getImageClass(),width,height,numBands); default: throw new IllegalArgumentException("Type not yet supported"); } }
public FourierVisualizeApp(ImageDataType imageType) { this.imageType = imageType; image = GeneralizedImageOps.createSingleBand(imageType,1,1); transform = GeneralizedImageOps.createInterleaved(imageType, 1, 1, 2); magnitude = GeneralizedImageOps.createSingleBand(imageType,1,1); phase = GeneralizedImageOps.createSingleBand(imageType,1,1); fft = GDiscreteFourierTransformOps.createTransform(imageType); setMainGUI(panel); }
public static <T extends ImageInterleaved<T>>T convertFrom( IplImage input , T output ) { ImageDataType dataType = depthToBoofType(input.depth()); int numBands = input.nChannels(); int width = input.width(); int height = input.height(); if( output != null ) { if( output.isSubimage() ) throw new IllegalArgumentException("Can't handle sub-images"); if( output.getDataType() != dataType ) throw new IllegalArgumentException("Expected data type of " +dataType+" found "+output.getDataType()+" instead"); output.numBands = numBands; output.reshape(width,height); } else { output = (T)GeneralizedImageOps.createInterleaved(dataType,width,height,numBands); } switch( dataType ) { case U8: case S8: convertFrom_I(input,(InterleavedI8)output); break; case S16: convertFrom_I(input,(InterleavedS16)output); break; case S32: convertFrom_I(input,(InterleavedS32)output); break; case F32: convertFrom_I(input,(InterleavedF32)output); break; case F64: convertFrom_I(input,(InterleavedF64)output); break; default: throw new RuntimeException("Add support for type "+dataType); } return output; }
public static <T extends ImageInterleaved>T convertFrom( IplImage input , T output ) { ImageDataType dataType = depthToBoofType(input.depth()); int numBands = input.nChannels(); int width = input.width(); int height = input.height(); if( output != null ) { if( output.isSubimage() ) throw new IllegalArgumentException("Can't handle sub-images"); if( output.getDataType() != dataType ) throw new IllegalArgumentException("Expected data type of " +dataType+" found "+output.getDataType()+" instead"); output.numBands = numBands; output.reshape(width,height); } else { output = GeneralizedImageOps.createInterleaved(dataType,width,height,numBands); } switch( dataType ) { case U8: case S8: convertFrom_I(input,(InterleavedI8)output); break; case S16: convertFrom_I(input,(InterleavedS16)output); break; case S32: convertFrom_I(input,(InterleavedS32)output); break; case F32: convertFrom_I(input,(InterleavedF32)output); break; case F64: convertFrom_I(input,(InterleavedF64)output); break; default: throw new RuntimeException("Add support for type "+dataType); } return output; }