java 图像灰度化
public void jGrey_ActionPerformed(ActionEvent e) throws IOException{ if(flag_load){ // 读入图片 File inputFile = new File("G:\\vehicle license plate recognition syst
if(flag_load){
// 读入图片
File inputFile = new File("G:\\vehicle license plate recognition system\\image\\1.png");
// BufferedImage的主要作用就是将一副图片加载到内存中
BufferedImage input = ImageIO.read(inputFile);
int wi=input.getWidth();
int hi=input.getHeight();
pixels new int[iw*ih];
// 将相应的图片转换
BufferedImage grayImage = new BufferedImage(iw, ih,BufferedImage.TYPE_BYTE_GRAY);
for(int i=0; i<iw; i++){
for(int j=0; j<ih; j++){
int rgb = input.getRGB(i, j);
//红色:(255,0,0)或0x00FF0000
//绿色:(0,255,0)或0x0000FF00
//蓝色:(255,255,255)或0x00FFFFFF
// 取与运算的结果就是除了表示所对应的颜色的数字值之外其余部分都是零//加权平均值法
int grey = (int) (0.299*((rgb&0xff0000 )>>16)+0.587*((rgb&0xff00 )>>8)+0.114*((rgb&0xff)));
// 就是把四个八位二进制数
// 255<<24:11111111变成111111110000...(24个0)
rgb = 255<<24|grey<<16|grey<<8|grey;grayImage.setRGB(i, j, rgb);
}
}
tmp = grayImage;
try{
PixelGrabber pg = new PixelGrabber(tmp,0,0,iw,ih,pixels,0,iw);
// 得到像素数组
pg.grabPixels();}catch(InterruptedException e3){
e3.printStackTrace();
}
flag_grey = true;
repaint();
} else{
JOptionPane.showMessageDialog(null, "先点击“装载图像”,3Q!","提示:",
JOptionPane.WARNING_MESSAGE);
}
}
BufferedImage.TYPE_INT_RGB:8 位 RGB 颜色分量,不带alpha通道。
BufferedImage.TYPE_INT_ARGB:8 位 RGBA 颜色分量,带alpha通道。
BufferedImage.TYPE_INT_ARGB_PRE:8 位 RGBA 颜色分量,已预乘以 alpha。
BufferedImage.TYPE_INT_BGR:8 位 RGB 颜色分量Windows 或 Solaris 风格的图像,不带alpha通道。
BufferedImage.TYPE_3BYTE_BGR:8位GBA颜色分量,用3字节存储Blue、Green和Red三种颜色,不存在alpha。
BufferedImage.TYPE_4BYTE_ABGR:8位RGBA颜色分量,用3字节存储Blue、Green和Red三种颜色以及1字节alpha。
BufferedImage.TYPE_4BYTE_ABGR_PRE:具有用3字节存储的Blue、Green和Red三种颜色以及1字节alpha。
BufferedImage.TYPE_USHORT_565_RGB:具有5-6-5RGB颜色分量(5位Red、6位Green、5位Blue)的图像,不带alpha。
BufferedImage.TYPE_USHORT_555_RGB:具有5-5-5RGB颜色分量(5位Red、5位Green、5位Blue)的图像,不带alpha。
BufferedImage.TYPE_BYTE_GRAY:表示无符号byte灰度级图像(无索引)。
BufferedImage.TYPE_USHORT_GRAY:表示一个无符号short 灰度级图像(无索引)。
BufferedImage.TYPE_BYTE_BINARY:表示一个不透明的以字节打包的 1、2 或 4 位图像。
BufferedImage.TYPE_BYTE_INDEXED:表示带索引的字节图像。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)