画像からヒストグラムを計算し、それをグラフにしてあらわしたいと思っています。プログラムは以下のようなところまでできており、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で質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Java java final 1 2022/06/10 22:49
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BMI測定を作ろうとしている...
-
EXECLの行を削除
-
ArrayListの使い方について(初...
-
cadで作った図面をフレーム上で...
-
KeyListenerの使い方について
-
java junit list同士の比較方法
-
Enterキーでボタンを押すにはど...
-
VBAの繰り返し処理表記と複数の...
-
JPanelの重ね方/OverlayLayout他
-
エラーで式の開始が不正ですと...
-
チェックボックスを動的に生成する
-
JavaのswingでCardLayoutの画面...
-
JPanelの切り替えと再描画
-
JavaでのSwingを使った簡易電卓...
-
あるコンボボックスを選択する...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
配列にnullを代入すると、null...
-
[JAVA]try 内の変数を外で!?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
javaで文字数制限するには?
-
JTableの列ヘッダ
-
TextAreaでの文字の色
-
最後の行に移動するには?
-
【Swing】JPanel クラス外から...
-
4択クイズでのランダム出題の...
-
コンパイルエラー <identifier...
-
JPanelの重ね方/OverlayLayout他
-
JPanelの切り替えと再描画
-
エラーで式の開始が不正ですと...
-
JTable の 列幅を個別に設定す...
-
VB6.0でのTextboxの高さ変更
-
ボタンクリック後パネルを再描...
-
ArrayListの使い方について(初...
-
JavaでのSwingを使った簡易電卓...
-
連番をオブジェクト名の最後に...
-
あるコンボボックスを選択する...
-
Buttonを押すと画像が表示され...
-
KeyListenerの使い方について
おすすめ情報