Difference between revisions of "Example Color Space"
From BoofCV
Jump to navigationJump to search (Updated for v0.16) |
m |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Example of how to convert between different color spaces in BoofCV. Either the whole image can be | Example of how to convert between different color spaces in BoofCV. Either the whole image can be converted or individual values. | ||
Example Code: | Example Code: | ||
* [https://github.com/lessthanoptimal/BoofCV/blob/v0. | * [https://github.com/lessthanoptimal/BoofCV/blob/v0.40/examples/src/main/java/boofcv/examples/imageprocessing/ExampleColorSpace.java ExampleColorSpace.java] | ||
Concepts: | Concepts: | ||
* Color space | * Color space | ||
Relevant | Relevant Examples: | ||
* [[ | * [[Example_Color_Segmentation| Color Segmentation]] | ||
= Example Code = | = Example Code = | ||
Line 20: | Line 20: | ||
*/ | */ | ||
public class ExampleColorSpace { | public class ExampleColorSpace { | ||
public static void main( String[] args ) { | |||
public static void main( String | BufferedImage image = UtilImageIO.loadImageNotNull(UtilIO.pathExample("sunflowers.jpg")); | ||
BufferedImage image = UtilImageIO. | |||
// Convert input image into a BoofCV RGB image | // Convert input image into a BoofCV RGB image | ||
Planar<GrayF32> rgb = ConvertBufferedImage.convertFromPlanar(image, null, true, GrayF32.class); | |||
//---- convert RGB image into different color formats | //---- convert RGB image into different color formats | ||
Planar<GrayF32> hsv = rgb.createSameShape(); | |||
ColorHsv. | ColorHsv.rgbToHsv(rgb, hsv); | ||
Planar<GrayF32> yuv = rgb.createSameShape(); | |||
ColorYuv. | ColorYuv.yuvToRgb(rgb, yuv); | ||
//---- Convert individual pixels into different formats | //---- Convert individual pixels into different formats | ||
float[] pixelHsv = new float[3]; | float[] pixelHsv = new float[3]; | ||
ColorHsv.rgbToHsv(10,50.6f,120,pixelHsv); | ColorHsv.rgbToHsv(10, 50.6f, 120, pixelHsv); | ||
System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n",pixelHsv[0],pixelHsv[1],pixelHsv[2]); | System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n", pixelHsv[0], pixelHsv[1], pixelHsv[2]); | ||
float[] pixelRgb = new float[3]; | float[] pixelRgb = new float[3]; | ||
ColorHsv.hsvToRgb(pixelHsv[0],pixelHsv[1],pixelHsv[2],pixelRgb); | ColorHsv.hsvToRgb(pixelHsv[0], pixelHsv[1], pixelHsv[2], pixelRgb); | ||
System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n", | System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n", | ||
pixelRgb[0],pixelRgb[1],pixelRgb[2]); | pixelRgb[0], pixelRgb[1], pixelRgb[2]); | ||
float[] pixelYuv = new float[3]; | float[] pixelYuv = new float[3]; | ||
ColorYuv.rgbToYuv(10,50.6f,120,pixelYuv); | ColorYuv.rgbToYuv(10, 50.6f, 120, pixelYuv); | ||
System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n",pixelYuv[0],pixelYuv[1],pixelYuv[2]); | System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n", pixelYuv[0], pixelYuv[1], pixelYuv[2]); | ||
ColorYuv.yuvToRgb(pixelYuv[0],pixelYuv[1],pixelYuv[2],pixelRgb); | ColorYuv.yuvToRgb(pixelYuv[0], pixelYuv[1], pixelYuv[2], pixelRgb); | ||
System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n", | System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n", | ||
pixelRgb[0],pixelRgb[1],pixelRgb[2]); | pixelRgb[0], pixelRgb[1], pixelRgb[2]); | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 14:58, 17 January 2022
Example of how to convert between different color spaces in BoofCV. Either the whole image can be converted or individual values.
Example Code:
Concepts:
- Color space
Relevant Examples:
Example Code
/**
* Simple demonstration for converting between color spaces in BoofCV. Currently RGB, YUV, HSV, and YCbCr are
* supported.
*
* @author Peter Abeles
*/
public class ExampleColorSpace {
public static void main( String[] args ) {
BufferedImage image = UtilImageIO.loadImageNotNull(UtilIO.pathExample("sunflowers.jpg"));
// Convert input image into a BoofCV RGB image
Planar<GrayF32> rgb = ConvertBufferedImage.convertFromPlanar(image, null, true, GrayF32.class);
//---- convert RGB image into different color formats
Planar<GrayF32> hsv = rgb.createSameShape();
ColorHsv.rgbToHsv(rgb, hsv);
Planar<GrayF32> yuv = rgb.createSameShape();
ColorYuv.yuvToRgb(rgb, yuv);
//---- Convert individual pixels into different formats
float[] pixelHsv = new float[3];
ColorHsv.rgbToHsv(10, 50.6f, 120, pixelHsv);
System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n", pixelHsv[0], pixelHsv[1], pixelHsv[2]);
float[] pixelRgb = new float[3];
ColorHsv.hsvToRgb(pixelHsv[0], pixelHsv[1], pixelHsv[2], pixelRgb);
System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
pixelRgb[0], pixelRgb[1], pixelRgb[2]);
float[] pixelYuv = new float[3];
ColorYuv.rgbToYuv(10, 50.6f, 120, pixelYuv);
System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n", pixelYuv[0], pixelYuv[1], pixelYuv[2]);
ColorYuv.yuvToRgb(pixelYuv[0], pixelYuv[1], pixelYuv[2], pixelRgb);
System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
pixelRgb[0], pixelRgb[1], pixelRgb[2]);
}
}