大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我更改了一点,完善一点。希望你能理解
“只有客户发展了,才有我们的生存与发展!”这是成都创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站制作、成都网站制作、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
import javax.swing.*;
import java.awt.*;
public class Histogram extends JPanel {
private int[] count;//方图的数值
private int x = 50;//x坐标为消饥枝50
public Histogram(){
this.count = new int[]{0,0,0,0,0};//默认count
repaint();
}
public Histogram(int[] count){
this.count = count;//传入count
repaint();
}
public void setHistogram(int[] count) {//设置count
this.count = count;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
if (count == null) return; //如果没有数值就不绘制
super.paintComponent(g);
//设置五个拿敏方图显示的颜色不一样
Color[] color = {new Color(245,125,46),new Color(143,184,216),new Color(184,217,136),new Color(255,203,15),new Color(168,169,171)};
int width = getWidth();//方图的宽度
int height = getHeight();//方图的肢念高度
int interval = (width - 40) / count.length;//方图之间的间隔
int individualWidth = (int)(((width - 40) /5) * 0.60);//单个方图的宽度
int maxCount = 0;//方图的最大值,即高度
for (int i = 0; i count.length; i++) {//获得最大值
if (maxCount count[i])
maxCount = count[i];
}
maxCount+= 5 - maxCount%5;
//绘制背景
g.setColor(new Color(210,212,215));
g.fillRect(30, 30, width - 40, height - 75);
//绘制左边线、底边线和数
g.setColor(Color.BLACK);
g.drawLine(30, height - 45, width - 10, height - 45);//这条底边线重复,下面的for重画了
g.drawLine(30,30,30, height - 45);
g.drawString("数",5,15);//左上角写“数”字
//绘制六条行线和左边的数值标识
for(int i = 0, num = 45;i = maxCount;i+=maxCount/5){
g.drawString(i + "", 10,height-num );
g.drawLine(30, height - num, width - 10, height - num);
num +=((height-75)/5.0+0.3);
}
for (int i = 0; i count.length; i++) {
int barHeight =
(int)((count[i]/(maxCount/5.0))*((height-75)/5.0)-0.3);//获得在每个方图上方写数值的高度
// g.setColor(new Color(73,168,213));
//绘制方图
g.setColor(color[i]);
g.fillRect(x, height - 45 - barHeight, individualWidth,barHeight);
//在方图上方标识该数值
g.setColor(Color.black);
g.drawString(count[i]+"", x + individualWidth/2,height - 50 - barHeight);
//绘制底边的数值标识
g.setColor(Color.BLACK);
if(i==0){
g.drawString("60", x, height - 30);
}
else if(i==4){
g.drawString("90", x, height - 30);
}
else{
g.drawString((50+10*i) + "-" + (59+10*i) + "", x, height - 30);
}
x += interval;//保证了数值左边一定与方图左边线靠齐
}
}
}
java.awt.Color 类用于封装默认 sRGB 颜色空间中的颜色,或者用于封装由 ColorSpace
标识的任意颜色空间中的颜色。每种颜色都有一个隐式的销丛坦 alpha 值 1.0,或者有一个在构造方法中提供的显式的 alpha 值。alpha
值定义了颜色的透明度,可用一个在 0.0 - 1.0 或 0 - 255 范围内的浮点值表示它。alpha 值为 1.0 或 255
则意味着颜色完全是不透明的,alpha 值为 0 或 0.0 则意味着颜色是完全透明的。在使用显式郑链的 alpha 值构造 Color
时,或者在获取某个 Color 的颜色/alpha 分量亏桐时,从不将颜色分量预乘 alpha 分量。
希望可以帮助到你.
//因为要计算H-S的直方图,所以需要得到一个HSV空间的图像
cvtColor(srcImage, hsvImage, CV_BGR2HSV);
imshow("【HSV空间的原图】"仔没, hsvImage);
//为计算直方图配置变量
//首先是需要计算的图像的通道,就是需要计算图像的哪个通道(bgr空间需要确定计算 b或g货r空间)
int channels[] = { 0, 1 };
//然后是配置输出的结果存储的 空间 ,用MatND类型来存储结果
MatND dstHist;
//接下来是直方图的每一个维度的 柱条的数目(就是将数值分组,共有多少组)
//如果这里写成int histSize = 256; 那么下面调用计算直方图念拆纳的函数的时候,该变量需要写 histSize
int histSize[] = { 30, 32 };
//最后是确定每个维度的取值范围,就是横坐标的总数
//首先得定御告义一个变量用来存储 单个维度的 数值的取值范围
float HRanges[] = { 0, 180 };
float SRanges[] = { 0, 256 };
const float *ranges[] = { HRanges, SRanges };