zft.java
来自「该程序能够实现图像分割功能」· Java 代码 · 共 83 行
JAVA
83 行
import java.awt.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
public class zft
{
public static void main(String[] args)
{
new zft();
}
public static double huidu[]=new double[256];
public zft()
{
try{
BufferedImage bufImg;
bufImg=ImageIO.read(new java.io.File("1.jpg"));
int width=bufImg.getWidth(); //获取图片的宽
int height=bufImg.getHeight(); //获取图片的长
int dianhuidu[][]=new int[width][height];
for(int j=0; j<height;j++)
for(int i=0;i<width;i++)
dianhuidu[i][j]=bufImg.getRGB(i,j)& 0xff;//获取灰度
for(int p=0;p<256;p++)//对灰度进行统计
{
int n=0;
for(int a=0;a<width;a++)
{
for(int b=0;b<height;b++)
{
if(dianhuidu[a][b]==p) //对灰度为p的象素点累加
n++;
}
}
huidu[p]=(1.0*n/(width*height)*500);
}
JFrame frame = new JFrame("直方图");//新建一个frame类
MapPane map1 = new MapPane();//画布
Container cp=frame.getContentPane();//容器类
cp.add(map1);
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((screen.width-250)/2,(screen.height-550)/2);
frame.setSize(550,550);
frame.setVisible(true);
frame.setResizable(false);
}
catch (Exception e)
{
}
}
}
class MapPane extends JPanel
{
public double[] liu=zft.huidu;
public void paint(Graphics g)
{
String string1;
Graphics2D g2d=(Graphics2D)g;
g.drawLine(10,30,10,500);
g.drawLine(10,500,530,500);
for(int j=0;j<55;j=j+1)
{
if(j%10==0)
{
string1=j*5+"";
g.drawString(string1,j*10,515);
}
}
for(int k=0, m=0;k<256;k++,m++)
{
double mm=500.0-liu[k]*50;
Line2D.Double line1=new Line2D.Double((double)(2*k+11),(double)500,(double)(11+2*k),mm);
g2d.draw(line1);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?