計算圖片中不同顏色所占的比例


package com.examp.iugjg;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

public class MyClass {

    public static void main (String [] arg){
        int[] rgb = new int[3];
        //白色
        List<Integer>  write=new ArrayList<Integer>();
        //灰色
        List<Integer>  gray=new ArrayList<Integer>();
        //深灰色
        List<Integer>  darkGray=new ArrayList<Integer>();

        System.out.println("開始讀取圖片");

        File file =new File("c:\\myPic.jpg");

        BufferedImage bi=null;
        if(null!=file){

            try {
                bi= ImageIO.read(file);
            } catch (IOException e) {
                e.printStackTrace();
            }

            int width=bi.getWidth();
            int height=bi.getHeight();
            int minx=bi.getMinX();
            int miny=bi.getMinY();

            System.out.println("圖片的寬度為:"+width+" 圖片的高度為:"+height);

            for(int i=minx;i<width;i++){
                for(int j=miny;j<height;j++){
                    int pixel=bi.getRGB(i,j);
                    rgb[0] = (pixel & 0xff0000) >> 16;
                    rgb[1] = (pixel & 0xff00) >> 8;
                    rgb[2] = (pixel & 0xff);

                    if(rgb[0]==255){
                        write.add(pixel);
                    }else if(rgb[0]>=160&&rgb[0]<255){
                        gray.add(pixel);
                    }else{
                        darkGray.add(pixel);
                    }

                    if(i==111&&j==55){
                        System.out.println(rgb[0]);
                    }
                }
            }

            int total=write.size()+gray.size()+darkGray.size();
            System.out.println("這張圖總共有"+total+"個像素點");

            DecimalFormat df=new DecimalFormat("0.00");
            float pxWrite=(float)write.size()/total;
            System.out.println("白色占比"+df.format(pxWrite));

            float pxGray=(float)gray.size()/total;
            System.out.println("灰色占比"+df.format(pxGray));

            float pxDarkGray=(float)darkGray.size()/total;
            System.out.println("深灰色占比"+df.format(pxDarkGray));

            float pxDG=(float)gray.size()/darkGray.size();
            System.out.println("灰色與深灰色比值"+df.format(pxDG));


        }else{
            System.out.println("未讀取到圖片");
        }

    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM