Applikation für RGB LED Matrix

Status
Nicht offen für weitere Antworten.

tschuby

Mitglied
Hi @All ;),

bei meinem Projekt handelt es sich um eine 8*8 RGB Led Matrix, welche über eine Java Applikation mit Daten versorgt werden soll.
Der Hardwareteil steht und die Matrix funktioniert wunderbar.
Probleme gibts es allerdings bei der Realisierung einer passenden Software, die folgende Aufgaben erledigen soll:

- Öffnen eines Bildes ( jpeg, bmp, png, ...)
- markieren eines Bildbereiches
- Skalierung des Bereiches auf 8*8 Pixel
- Auslesen der RGB Werte (welche später als BGR Werte zum µ-controller geschickt werden sollen)
- Übermittlung der Werte mittels rs232 an den controller

Ich habe mich erstmal auf die google Suche gestürzt und bin immer hin schon so weit, dass ich eine
Applikation habe, mit der ich beliebige Bilder öffnen kann.

http://rapidshare.com/files/185620516/bildbetrachter.jar.html

Es sind auch schon bereits Buttons für die fehlenden Funktionen eingefügt.

Nach einer weiteren Suche bin ich auf "imagej" aufmerksam geworden.

http://rsb.info.nih.gov/ij/

Dieses Programm bietet, bis auf die Datenübertragung alles was ich benötige.
Weg 1.: Der komplette Quellcode ist verfügbar und somit habe ich mir überlegt die einzelnen Programmteile evtl. in mein Programm zu übernehmen.

Weg 2: Oder evtl. anders herum und imagj von nicht benötigten Funktionen befreien und um eine "rs232-senden" Funktion erweitern?

Meine Programmierkenntnisse sind doch leider arg begrenzt und ich habe keine Ahnung, wie ich die einzelnen Funktionen zu einem einzigen Programm zusammfügen soll.
Z.B. Weg 1: Wie integriere ich die ImageJ Funktionen so, dass sie über die Buttons aufrufbar sind?

Gruß
Tschuby
 
G

Gelöschtes Mitglied 5909

Gast
ist da nicht n bischen viel dafür dass deine porgrammierkentnisse "arg begrenzt" sind?

Weg 1: Wie integriere ich die ImageJ Funktionen so, dass sie über die Buttons aufrufbar sind?

das macht man über Listener, aber die Buttons sind denke ich mal das kleinste Problem. Wenn du ImageJ verwenden willst, musst du die .jar in dein Projekt mit aufnehmen (Classpath/Build Path) und kannst dann die Klassen importieren. Die rs232 funktion in den imagej quelltext zu schreiben ist wohl blödsinn, mach das lieber in deinen eigenen klassen. An ImageJ würde ich selbst nichts verändern.
 

tschuby

Mitglied
mir ist bewusst, dass das kein spaziergang wird. ;)
trotzdem möchte ich es gerne angehen.
vieleicht klappt es ja, mit der hilfe des forums ;)

imagej ist eingebunden, ich kann jedoch nicht direkt auf den quelltext zugreifen.

 
G

Gelöschtes Mitglied 5909

Gast
sollst du auch garnicht, du sollst es verwenden.

Schreibe deine eigene App und verwende dazu ImageJ, aber schreibe nicht ImageJ um
 

tschuby

Mitglied
Ich habe auch garnicht vor, ImageJ umzuschreiben, möchte es ja gerne verwenden.

Hier ist z.B. der Code von meinem Bildbetrachter:

Code:
import javax.swing.*;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Bildbetrachter extends JFrame  {
   private JPanel p_btnPanel, p_picturePanel;
   private JButton btn_choose;
   private JButton btn_back;
   private JButton btn_next;
   
   private JButton btn_test;
   private JButton btn_scale;
   private JButton btn_send;
   
   private JLabel l_picture, l_name;
   private JFileChooser chooser;
   private File[] pictures;
   private int index;
  

   public Bildbetrachter(String title) {
      super(title);

      setSize(780, 585);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

      Container content = getContentPane(); 

      l_name = new JLabel("Dateiname: ");

      p_btnPanel = new JPanel(new GridLayout(1, 3));

      
      p_picturePanel = new JPanel(new BorderLayout());

      l_picture = new JLabel();
      l_picture.setHorizontalAlignment((int)JLabel.CENTER_ALIGNMENT);
      p_picturePanel.add(l_picture);

      btn_choose = new JButton("Bild auswählen");
      btn_choose.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_chooseClicked();
         }
      });
      p_btnPanel.add(btn_choose);

      btn_back = new JButton("<  Voriges Bild");
      btn_back.setEnabled(false);
      btn_back.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_backClicked();
         }
      });
      p_btnPanel.add(btn_back);

      btn_next = new JButton("Nächstes Bild  >");
      btn_next.setEnabled(false);
      btn_next.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_nextClicked();
         }
      });
      p_btnPanel.add(btn_next);
     
      btn_test = new JButton("Auswahl");
      btn_test.setEnabled(false);
      btn_test.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_testClicked();
         }
      });
      p_btnPanel.add(btn_test);

      
      
      btn_scale = new JButton("Skalieren");
      btn_scale.setEnabled(false);
      btn_scale.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_scaleClicked();
         }
      });
      p_btnPanel.add(btn_scale);
      
      
      btn_send = new JButton("Senden");
      btn_send.setEnabled(false);
      btn_send.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            btn_sendClicked();
         }
      });
      p_btnPanel.add(btn_send);
   
      
      
      
      content.add(l_name, BorderLayout.NORTH);
      content.add(new JScrollPane(p_picturePanel), BorderLayout.CENTER);
      content.add(p_btnPanel, BorderLayout.SOUTH);

      chooser = new JFileChooser();
      chooser.addChoosableFileFilter(new DateiFilter());
      chooser.setMultiSelectionEnabled(true); 
   }
   
   private void btn_chooseClicked() {
      int result = chooser.showDialog(this, "Auswählen");
      switch(result) {
         case JFileChooser.APPROVE_OPTION:
            pictures = chooser.getSelectedFiles();
            if(pictures == null) {
              return;
            }
            btn_next.setEnabled(true);
            btn_back.setEnabled(true);
            btn_test.setEnabled(true);
            btn_scale.setEnabled(true);
            btn_send.setEnabled(true);
            
            index = 0;
            l_picture.setIcon(new ImageIcon(pictures[index].getAbsolutePath()));
            l_name.setText("Dateiname: "+pictures[index].getName());
      }
   }

   
   private void btn_backClicked() {
      index--;
      if(index < 0) {
         index = pictures.length-1;
      }
      l_picture.setIcon(new ImageIcon(pictures[index].getAbsolutePath()));
      l_name.setText("Dateiname: "+pictures[index].getName());
   }

   
   private void btn_nextClicked() {
      index++;
      if(index > pictures.length-1) {
         index = 0;
      }
      l_picture.setIcon(new ImageIcon(pictures[index].getAbsolutePath()));
      l_name.setText("Dateiname: "+pictures[index].getName());
   }
 
  private void btn_scaleClicked() {
		
  }
   
  private void btn_sendClicked() {
		

  }
   class DateiFilter extends javax.swing.filechooser.FileFilter {
      public String getDescription() {
         return "Grafikdateien (*.gif, *.jpg, *.png)";
      }

      public boolean accept(File file) {
         if(file.isDirectory())
            return true;
         else if(file.getName().endsWith(".gif"))
            return true;
         else if(file.getName().endsWith(".jpg"))
            return true;
         else if(file.getName().endsWith(".png"))
            return true;
         else
            return false;
      }
   }

   public static void main(String[] args) {
      new Bildbetrachter("RGB Matrix Bildbetrachter").setVisible(true);
   }
}

Nun weiß ich nicht wie ich auf die einzelnen Parts von ImageJ zugreifen kann.
(z.b. die scale Funktion)
 

SilentJ

Bekanntes Mitglied
Binde die von ImageJ bereitgestellte ij.jar Datei in den Klassenpfad deines Projekts ein, dann stehen Dir auch die Funktionen zur Verfügung.

Ansonsten ist m.E. alles Wesentliche hier kurz erklärt:

ImageJ Kurzreferenz

Michael
 

Ariol

Top Contributor
Dachte, dass dir das evtl. hilft...

Code:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class RGBImage
{
	private BufferedImage bImage;
	int r[][];
	int g[][];
	int b[][];
	
	public RGBImage(String filename, int width, int height) throws IOException
	{
		this(new File(filename),width,height);
	}
	
	public RGBImage(File file, int width, int height) throws IOException
	{
		bImage = ImageIO.read(file);
		Image image = bImage.getScaledInstance(width, height, BufferedImage.SCALE_DEFAULT);
		bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics graphic = bImage.createGraphics();
        graphic.drawImage(image, 0, 0, null);
        graphic.dispose();
        
        r = new int[width][height];
        g = new int[width][height];
        b = new int[width][height];
        
        for(int x = 0; x < width; x++)
        {
        	for(int y = 0; y < height; y++)
        	{
        		int rgb = bImage.getRGB(x, y);
				rgb -= rgb >> 24 << 24;
				r[x][y] = rgb >> 16;
				rgb -= rgb >> 16 << 16;
				g[x][y] = rgb >> 8;
				rgb -= rgb >> 8 << 8;
				b[x][y] = rgb;
        	}
        }
	}
	
	public int getRed(int x, int y) throws ArrayIndexOutOfBoundsException
	{
		return r[x][y];
	}
	
	public int getGreen(int x, int y) throws ArrayIndexOutOfBoundsException
	{
		return g[x][y];
	}
	
	public int getBlue(int x, int y) throws ArrayIndexOutOfBoundsException
	{
		return b[x][y];
	}
	
	public int getWidth()
	{
		return bImage.getWidth();
	}
	
	public int getHeight()
	{
		return bImage.getHeight();
	}
	
	public BufferedImage getImage()
	{
		return bImage;
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H OOP Setting(config) für Applikation sicheren? Allgemeine Java-Themen 9
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
G idee für java applikation Allgemeine Java-Themen 3
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
L Java Applikation Web Anbindung Allgemeine Java-Themen 2
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
B Applikation ohne (direkt)Java installiert zu haben auszuführen Allgemeine Java-Themen 8
T Datei öffnen mit eigener Applikation.exe Allgemeine Java-Themen 4
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
P Java Applikation mit Webinterface Allgemeine Java-Themen 1
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
B Best Practice Start-Applikation mit Logger? Allgemeine Java-Themen 3
J java-applikation-1.jar soll java-applikation-2 aufrufen.jar Allgemeine Java-Themen 5
O Interpreter-Fehler WebStart-Applikation startet nicht Allgemeine Java-Themen 5
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
S Perfomance Problem mit Java Applikation Allgemeine Java-Themen 4
MrGe Java-Applikation und OpenOffice/UNO Allgemeine Java-Themen 2
C Java Applikation Benutzerkontrolle Allgemeine Java-Themen 3
S Profiler-Funktionen in eigener Applikation nutzen..? Allgemeine Java-Themen 5
J Aus Applikation ein Applet machen Allgemeine Java-Themen 5
S Java Webstart Applikation in den Autostart? Allgemeine Java-Themen 3
T Gewährleisten das Applikation läuft!? Allgemeine Java-Themen 2
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
R JAR-Update in laufender Applikation Allgemeine Java-Themen 9
ChackZz Applikation zu Applet umbauen Allgemeine Java-Themen 13
$ Applikation(Left for Dead) mit Parametern Starten Allgemeine Java-Themen 5
D Jython in Applikation einbinden Allgemeine Java-Themen 3
O Applikation über java steuern Allgemeine Java-Themen 11
PAX Applikation sich selbst neu starten lassen Allgemeine Java-Themen 27
Q daten propertie datei aus anderer applikation Allgemeine Java-Themen 6
M Beenden einer externen Java-Applikation Allgemeine Java-Themen 11
H Php Script aus Java Applikation starten Allgemeine Java-Themen 2
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
A Setup von einer Java-Applikation starten Allgemeine Java-Themen 4
B Java Applikation incl. dll unter Linux ausführen? Allgemeine Java-Themen 11
M Nur eine laufende Applikation erlauben? Allgemeine Java-Themen 12
M Textfenster von fremder Applikation lesen Allgemeine Java-Themen 5
M wav in Applikation abspielen Allgemeine Java-Themen 2
mabu MediaCenter Applikation in Java realistisch oder nicht? Allgemeine Java-Themen 11
J Merkwürdiger Fehler: Applikation hängt einfach, Quartz-bug? Allgemeine Java-Themen 6
E NT-Anmeldung in Java Client-Applikation nutzen. JAAS ? Allgemeine Java-Themen 5
P DB-Applikation mit GWT-Frontend Allgemeine Java-Themen 3
D Startverhalten Java-Applikation Allgemeine Java-Themen 7
A Java-Applikation auf einem anderen Rechner starten Allgemeine Java-Themen 17
D Plattformunabhängiges ausführbare Java-Applikation ohne jar Allgemeine Java-Themen 5
G überpüfen ob bereits instanz von java applikation läuft Allgemeine Java-Themen 4
L Ressourcen Java Applikation Allgemeine Java-Themen 4
D Name der Java-Applikation Allgemeine Java-Themen 2
G Java Applikation stürzt ab :!: Allgemeine Java-Themen 5
I JAR aus Applikation in neuer VM ausführen Allgemeine Java-Themen 9
clemente Swing Applikation killt kwin Prozess (unter Linux / KDE) Allgemeine Java-Themen 3
M Java Applikation Slideshow Allgemeine Java-Themen 13
D Japplet in Applikation einbinden Allgemeine Java-Themen 2
G Fehler beim Ausführen einer Applikation Allgemeine Java-Themen 4
C Java Applikation - Schrift . (formatieren, effekte) Allgemeine Java-Themen 4
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
Z suche feedback zum entwurf einer applikation Allgemeine Java-Themen 2
D Applet in Applikation einbinden? Allgemeine Java-Themen 4
C Türme von Hanoi-Umschreiben von Applet in Applikation, Rekur Allgemeine Java-Themen 2
G Applikation in Website einbinden Allgemeine Java-Themen 3
S Web Applikation wird immer langsamer Allgemeine Java-Themen 5
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
thE_29 Java Applikation ohne grafische Oberfläche Allgemeine Java-Themen 24
G Nur eine Instanz einer Applikation Allgemeine Java-Themen 4
G Java Applikation von einem Browser steuern Allgemeine Java-Themen 8
L Java Applikation über Netzwerk starten Allgemeine Java-Themen 8
M Einstellung einer Applikation speichern? Allgemeine Java-Themen 8
A wie bekomme ich Applikation zum Laufen Allgemeine Java-Themen 3
P Welches JRE braucht meine Applikation? Allgemeine Java-Themen 3
T Applet <-> Applikation Allgemeine Java-Themen 4
X Applikation Java Web Start fähig machen Allgemeine Java-Themen 4
O interess. Applikation-Tunneling, Downloads und IP-Verbergung Allgemeine Java-Themen 3
D Web-basierte Applikation Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26

Ähnliche Java Themen

Neue Themen


Oben