图像处理和二位进制运算

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球