- Java 数字图像处理
- 数字图像处理 - 首页
- 数字图像处理 - 简介
- 数字图像处理 - Java BufferedImage 类
- 数字图像处理 - 图片下载与上传
- 数字图像处理 - 图片像素
- 数字图像处理 - 灰度转换
- 数字图像处理 - 增强图像对比度
- 数字图像处理 - 增强图像亮度
- 数字图像处理 - 增强图像锐度
- 数字图像处理 - 图像压缩技术
- 数字图像处理 - 添加图像边框
- 数字图像处理 - 图像金字塔
- 数字图像处理 - 基本阈值分割
- 数字图像处理 - 图像形状转换
- 数字图像处理 - 高斯滤波器
- 数字图像处理 - 方框滤波器
- 数字图像处理 - 腐蚀与膨胀
- 数字图像处理 - 水印
- 数字图像处理 - 卷积理解
- 数字图像处理 - Prewitt 算子
- 数字图像处理 - Sobel 算子
- 数字图像处理 - Kirsch 算子
- 数字图像处理 - Robinson 算子
- 数字图像处理 - Laplacian 算子
- 数字图像处理 - 加权平均滤波器
- 数字图像处理 - 创建缩放效果
- 数字图像处理 - 开源库
- 数字图像处理 - OpenCV 简介
- 数字图像处理 - OpenCV 灰度转换
- 数字图像处理 - 颜色空间转换
- 数字图像处理有用资源
- 数字图像处理 - 快速指南
- 数字图像处理 - 有用资源
- 数字图像处理 - 讨论
Java 数字图像处理 - 灰度转换
为了将彩色图像转换为灰度图像,您需要使用File和ImageIO对象读取图像的像素或数据,并将图像存储在BufferedImage对象中。其语法如下:
File input = new File("digital_image_processing.jpg"); BufferedImage image = ImageIO.read(input);
此外,使用getRGB()方法获取像素值,并对其执行GrayScale()方法。getRGB()方法以行和列索引作为参数。
Color c = new Color(image.getRGB(j, i)); int red = (c.getRed() * 0.299); int green =(c.getGreen() * 0.587); int blue = (c.getBlue() *0.114);
除了这三种方法外,Color类中还有其他一些方法,简要描述如下:
序号 | 方法及描述 |
---|---|
1 |
brighter() 它创建一个比此颜色更亮的新颜色。 |
2 |
darker() 它创建一个比此颜色更暗的新颜色。 |
3 |
getAlpha() 它返回0-255范围内的alpha分量。 |
4 |
getHSBColor(float h, float s, float b) 它基于HSB颜色模型的指定值创建一个Color对象。 |
5 |
HSBtoRGB(float hue, float saturation, float brightness) 它将由HSB模型指定的颜色的分量转换为默认RGB模型的等效值集。 |
6 |
toString() 它返回此颜色的字符串表示形式。 |
最后一步是将这三个值相加,并将其重新设置为相应的像素值。其语法如下:
int sum = red+green+blue; Color newColor = new Color(sum,sum,sum); image.setRGB(j,i,newColor.getRGB());
示例
以下示例演示了将图像转换为灰度图像的Java BufferedImage类的用法:
import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import javax.swing.JFrame; public class GrayScale { BufferedImage image; int width; int height; public GrayScale() { try { File input = new File("digital_image_processing.jpg"); image = ImageIO.read(input); width = image.getWidth(); height = image.getHeight(); for(int i=0; i<height; i++) { for(int j=0; j<width; j++) { Color c = new Color(image.getRGB(j, i)); int red = (int)(c.getRed() * 0.299); int green = (int)(c.getGreen() * 0.587); int blue = (int)(c.getBlue() *0.114); Color newColor = new Color(red+green+blue, red+green+blue,red+green+blue); image.setRGB(j,i,newColor.getRGB()); } } File ouptut = new File("grayscale.jpg"); ImageIO.write(image, "jpg", ouptut); } catch (Exception e) {} } static public void main(String args[]) throws Exception { GrayScale obj = new GrayScale(); } }
输出
执行给定的示例时,它会将图像digital_image_processing.jpg转换为其等效的灰度图像,并将其以grayscale.jpg的名义写入硬盘。
原始图像
灰度图像
广告