1.RGB的二进制编码:
操作:
1.直接操作这个数的二进制进行移动
右移:>>
高位缺失补零,低位被挤出则丢掉,最后保留想要的结果
左移:<<
高位被挤出的丢掉,低位缺失的补0
2.运算:二进制码的与运算
相同保留原码,不同为0
如green:
0000 0000 0000 0000 1111 1111 1011 1011&
0000 0000 0000 0000 0000 0000 1111 1111=
0000 0000 0000 0000 0000 0000 1011 1011
经过一系列操作成功提取出想要的G
int pix=14671839;
int red=(pix>>16)&0xFF;
System.out.println("Red:"+red);
int green=(pix>>8)&255;
System.out.println("Green:"+green);
int blue=(pix)&255;
System.out.println("Blue:"+blue);
2.图像处理
public int[][] getPixelArray(String imgPath){
File file = new File(imgPath);
BufferedImage buffimg=null;
try {
buffimg=ImageIO.read(file);
} catch (IOException e) {
throw new RuntimeException(e);
}
int w=buffimg.getWidth();
int h=buffimg.getHeight();
System.out.println("w:"+w+" h:"+h);
int [][] imgArr=new int[w][h];
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
imgArr[i][j]=buffimg.getRGB(i,j);
}
}
return imgArr;
}
@Override
public void paint(Graphics g){
super.paint(g);
int [][] imgArr=getPixelArray("D:\\research\\uml作业\\w4图\\李老师.PNG");
for(int i=0;i<imgArr.length;i++){
for(int j=0;j<imgArr[i].length;j++){
int pix=imgArr[i][j];
int red=(pix>>16)&0xFF;
int green=(pix>>8)&0xFF;
int blue=(pix)&0xFF;
Color color = new Color(red/2,green,blue);
g.setColor(color);
g.fillRect(100+i,100+j,1,1);
}
}
}
Original: https://blog.csdn.net/qq_52245307/article/details/127345254
Author: 前三个字
Title: 图像处理和二位进制运算
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645993/
转载文章受原作者版权保护。转载请注明原作者出处!