/** * Converts {@link ImageInterleaved} image into Bitmap. * * @see #declareStorage(android.graphics.Bitmap, byte[]) * * @param input Input Planar image. * @param output Output Bitmap image. * @param storage Byte array used for internal storage. If null it will be declared internally. */ public static <T extends ImageInterleaved<T>> void interleavedToBitmap(T input, Bitmap output, byte[] storage) { if( output.getWidth() != input.getWidth() || output.getHeight() != input.getHeight() ) { throw new IllegalArgumentException("Image shapes are not the same"); } if( storage == null ) storage = declareStorage(output,null); if( input.getImageType().getDataType() == ImageDataType.U8 ) ImplConvertBitmap.interleavedToArray((InterleavedU8) input, storage, output.getConfig()); else if( input.getImageType().getDataType() == ImageDataType.F32 ) ImplConvertBitmap.interleavedToArray((InterleavedF32) input, storage, output.getConfig()); else throw new IllegalArgumentException("Unsupported BoofCV Type"); output.copyPixelsFromBuffer(ByteBuffer.wrap(storage)); }
/** * Converts {@link ImageInterleaved} image into Bitmap. * * @see #declareStorage(android.graphics.Bitmap, byte[]) * * @param input Input Planar image. * @param output Output Bitmap image. * @param storage Byte array used for internal storage. If null it will be declared internally. */ public static <T extends ImageInterleaved> void interleavedToBitmap(T input, Bitmap output, byte[] storage) { if( output.getWidth() != input.getWidth() || output.getHeight() != input.getHeight() ) { throw new IllegalArgumentException("Image shapes are not the same"); } if( storage == null ) storage = declareStorage(output,null); if( input.getImageType().getDataType() == ImageDataType.U8 ) ImplConvertBitmap.interleavedToArray((InterleavedU8) input, storage, output.getConfig()); else if( input.getImageType().getDataType() == ImageDataType.F32 ) ImplConvertBitmap.interleavedToArray((InterleavedF32) input, storage, output.getConfig()); else throw new IllegalArgumentException("Unsupported BoofCV Type"); output.copyPixelsFromBuffer(ByteBuffer.wrap(storage)); }
public static <T extends ImageInterleaved<T>> void interleavedYuvToBitmap(T input, Bitmap output, byte[] storage) { if( output.getWidth() != input.getWidth() || output.getHeight() != input.getHeight() ) { throw new IllegalArgumentException("Image shapes are not the same"); } if( storage == null ) storage = declareStorage(output,null); if( input.getImageType().getDataType() == ImageDataType.U8 ) { switch( output.getConfig() ) { case ARGB_8888: ImplConvertBitmap.interleavedYuvToArgb8888((InterleavedU8) input, storage); output.copyPixelsFromBuffer(ByteBuffer.wrap(storage)); return; case RGB_565: ImplConvertBitmap.interleavedYuvToRGB565((InterleavedU8) input, storage); output.copyPixelsFromBuffer(ByteBuffer.wrap(storage)); return; } } throw new IllegalArgumentException("Unsupported BoofCV Type"); }
ImageGray so = (ImageGray)output; if( mb.getImageType().getDataType() != so.getDataType() ) { int w = output.width; int h = output.height; ImageGray tmp = GeneralizedImageOps.createSingleBand(mb.getImageType().getDataType(),w,h); average(mb,tmp); convert(tmp,so);
/** * Converts a {@link Planar} into a {@link ImageGray} by computing the average value of each pixel * across all the bands. * * @param input Input Planar image that is being converted. Not modified. * @param output (Optional) The single band output image. If null a new image is created. Modified. * @return Converted image. */ public static <T extends ImageGray<T>>T average(ImageInterleaved input , T output ) { ImageDataType type = input.getImageType().getDataType(); if( type == ImageDataType.U8) { return (T)ConvertImage.average((InterleavedU8)input,(GrayU8)output); } else if( type == ImageDataType.S8) { return (T)ConvertImage.average((InterleavedS8)input,(GrayS8)output); } else if( type == ImageDataType.U16 ) { return (T)ConvertImage.average((InterleavedU16)input,(GrayU16)output); } else if( type == ImageDataType.S16 ) { return (T)ConvertImage.average((InterleavedS16)input,(GrayS16)output); } else if( type == ImageDataType.S32 ) { return (T)ConvertImage.average((InterleavedS32)input,(GrayS32)output); } else if( type == ImageDataType.S64 ) { return (T)ConvertImage.average((InterleavedS64)input,(GrayS64)output); } else if( type == ImageDataType.F32 ) { return (T)ConvertImage.average((InterleavedF32)input,(GrayF32)output); } else if( type == ImageDataType.F64 ) { return (T)ConvertImage.average((InterleavedF64)input,(GrayF64)output); } else { throw new IllegalArgumentException("Unknown image type: " + type); } }