
画像からヒストグラムを計算し、それをグラフにしてあらわしたいと思っています。プログラムは以下のようなところまでできており、TextFieldにファイル名を入力し、EnterkeyもしくはOpenを押すと左下にその画像が表示されるところまでできています。
Startを押すと、その画像のRGBヒストグラムを計算し、赤、緑、青各色のグラフを三つ右下に表示したいのですがGraphicsの使い方や、BufferedImageの使い方がわからず四苦八苦しております。ヒストグラムをしては横区間を16としてやりたいと思っております。自分なりにはヒストグラム値を16で割り、その数値をもとにGraphicsオブジェクトに与えてそれをもとに描写するという方向で作成していましたがわたくしには難しく頓挫してしまいました。どうぞよろしくお願いいたします。
/*ここからソース*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.imageio.*;
import java.io.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static class ActionB1 implements ActionListener {
JTextField input;
JLabel pict1;
JFrame frame2;
public ActionB1(JTextField input0,JLabel pict10,JFrame A0){
input =input0;
pict1=pict10;
frame2 = A0;
}
public void actionPerformed(ActionEvent e){
if(getClass().getResource(input.getText())==null){
pict1.setText("file not found!!!");
}
else {
ImageIcon temp =new ImageIcon(getClass().getResource(input.getText()));
pict1.setIcon(temp);
}
pict1.repaint();
}
}
public static class ActionB2 implements ActionListener{
JLabel pict2;
JTextField input;
JFrame frame3;
public ActionB2(JTextField input0,JLabel pict20,JFrame A0){
input =input0;
pict2=pict20;
frame3=A0;
}
public void actionPerformed(ActionEvent e){
File filename = new File(input.getText());
BufferedImage Image = null;
try {
Image = ImageIO.read(filename);
} catch (IOException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
//ここからわかりません
}
public static void main(String[] args){
JFrame frame =new JFrame("タイトル");
frame.setSize(600,400);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JButton b1 =new JButton("OPEN"),b2=new JButton("START");
JTextField t1 = new JTextField(30);
p1.add(t1);
p1.add(b1);
p1.add(b2);
b1.setBounds(350,10,100,20);
b2.setBounds(460,10,100,20);
t1.setBounds(110,10,230,20);
p1.setBounds(20,10,80,20);
frame.getContentPane().add(b1);
frame.getContentPane().add(b2);
frame.getContentPane().add(t1);
frame.getContentPane().add(p1);
p2.setLayout(new GridLayout(1,2));
JLabel pict1= new JLabel(),pict2= new JLabel();
p2.add(pict1);
p2.add(pict2);
ActionB1 actB1 = new ActionB1(t1,pict1,frame);
ActionB2 actB2 = new ActionB2(t1,pict2,frame);
b1.addActionListener(actB1);
b2.addActionListener(actB2);
t1.addActionListener(actB1);
frame.getContentPane().add(p1,BorderLayout.NORTH);
frame.getContentPane().add(p2,BorderLayout.CENTER);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

No.2ベストアンサー
- 回答日時:
>画像からヒストグラム
これだけでは、画像のどんなデータを取り出してどのように集計したいのかも解らないので、アルゴリズムも考えようが無いです。
この回答への補足
説明が足りていませんでした。
jpg,gifなどのファイルのパスを入力し、Fileクラスのインスタンスを作成してそれをもとにBufferedImageクラスのインスタンスを作成してそこから赤、緑、青各色のヒストグラムを計算してそれをパネルに貼り付けたいと思っております。getRGBを用いてRGBの値を手に入れたいのですがgetRGBの使い方もよくわかっておりません。
それをもとにGraphicsを用いて描写したいとおもっております。
なにとぞよろしくおねがいします。
No.1
- 回答日時:
>Graphicsの使い方や、BufferedImageの使い方がわからず四苦八苦しております。
>わたくしには難しく頓挫してしまいました。
GraphicsやBufferedImageの使い方のどの点がわからないのですか?
どこが難しくて頓挫してしまったのですか?
どのような回答を期待していますか?
質問の内容を絞って頂けないと回答のしようがありませんよ。
この回答への補足
すいません。質問の内容が不十分でした。
GraphicsやBufferedImageの使い方もわかりませんがそれよりも
このプログラムを作るにあたってアルゴリズムもどうすればいいか全くわかりません。
できればソースを作っていただいて教えていただきたいと思っております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4択クイズでのランダム出題の...
-
次のように書いたのですが、ウ...
-
Buttonを押すと画像が表示され...
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
Formの値が変更されたかどうか...
-
javaです
-
オブジェクトの中のプロパティ...
-
VBSエラー"オブジェクト型の変...
-
C# DataGridView列カスタマイズ
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
C#でのWNetAddConnection3の使...
-
変数を動的に作るには?
-
コマンドプロンプトに不正な文...
-
matchesを否定文として使う方法...
-
POIでExcelに時刻(h:mm)の値を...
-
java 入力 3 4 3 出力 ABC DEFG...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Buttonを押すと画像が表示され...
-
setPrefferedSizeとsetSize
-
javaで文字数制限するには?
-
JPanelの切り替えと再描画
-
java junit list同士の比較方法
-
SwingのJMenuに大量のJMenuItem...
-
JDialogを閉じた時の処理
-
JFrameとJPanelの最大化について
-
KeyListenerの使い方について
-
最後の行に移動するには?
-
JTable の 列幅を個別に設定す...
-
TextAreaでの文字の色
-
cadで作った図面をフレーム上で...
-
JTableの列ヘッダ
-
4択クイズでのランダム出題の...
-
JPanelの重ね方/OverlayLayout他
-
Enterキーでボタンを押すにはど...
-
Swing自作コンポーネントをadd...
-
Java-Swing TextAreaにスクロー...
-
キーボードから入力された全角...
おすすめ情報