Hi,
Wenn ich das bis jetzt richtig verstanden habe, dann kann ich mit public static int value; Variablen einrichten, die classübergreifend zu erreichen sind oder?
Mein problem ist folgendes. Ich bin Java Anfänger und versuche Grade eine Arbeit auf 2 Classes zu verteilen. In einer Class sollen die daten ermittelt werden (welche is momentan ja unwichtig), diese sollen in der Variable der anderen Class zur Verfügung gestellt werden. Wenn ich nich total am ganzen Aufbau von classes vorbei schieße hoffe ich das ihr mir helfen könnt.
Vorweg mal der Code der die Daten ermitteln soll. Der ließt den Grünwert aus Pixeln von Bildern, die kontinuirlich mit ner Webcam geschossen werden (grab.class):
Als zweites die Class, die die erzeugten Daten aus der Variable auslesen und in der Cionsole wiedergeben soll:
Das funktioniert auch insoweit, dass ich den Anfangswert der Variable kontinuirlich angezeigt bekomme (000000000...) Da ich nur Nullen bekomme bin ich mir sicher, dass die if schleifen aus dem ersten Code garnicht ausgeführt werden. Wie bekomm ich das nun hiin, dass Code eins die Sachen auswertet, sie in der Variable speichert und Code 2 sie sich abholt und mir ausgibt. Ist das ansatzweise richtig oder bin ich total auf dem Holzpfad.
Danke schon einmal.
[/code]
Wenn ich das bis jetzt richtig verstanden habe, dann kann ich mit public static int value; Variablen einrichten, die classübergreifend zu erreichen sind oder?
Mein problem ist folgendes. Ich bin Java Anfänger und versuche Grade eine Arbeit auf 2 Classes zu verteilen. In einer Class sollen die daten ermittelt werden (welche is momentan ja unwichtig), diese sollen in der Variable der anderen Class zur Verfügung gestellt werden. Wenn ich nich total am ganzen Aufbau von classes vorbei schieße hoffe ich das ihr mir helfen könnt.
Vorweg mal der Code der die Daten ermitteln soll. Der ließt den Grünwert aus Pixeln von Bildern, die kontinuirlich mit ner Webcam geschossen werden (grab.class):
Code:
package grabber;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.format.*;
import javax.media.util.*;
import com.sun.image.codec.jpeg.*;
import com.sun.media.protocol.v4l.DataSource;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.media.Buffer;
import javax.swing.JFrame;
import icommand.nxt.Sound;
import icommand.nxt.comm.NXTCommand;
import icommand.nxt.*;
import javax.imageio.ImageIO;
import grabber.gui.*;
/**
*
* @author toti
*/
public class grab {
public static int test = 0;
/** Creates a new instance of grab */
public grab(String [] args) throws Exception{
// Device festlegen
CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("v4l:Logitech QuickCam EC:0");
if(deviceInfo == null)
{
System.out.println("no device found");
}
Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
player.start();
// Kurz warten, soll sonst angeblich lags bringen
Thread.sleep(2500);
System.out.println("Wait: End");
JFrame frame = new JFrame("Display");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,20,320,240); // position bleibt dir überlassen, höhe und breite kannst du der größe der bilder anpassen
frame.getContentPane().add(player.getVisualComponent());
frame.setVisible(true);
while(true)
{
// FrameGrab
FrameGrabbingControl frameGrabber = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = frameGrabber.grabFrame();
// Als Bild in en Buffer schieben
Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
g.drawImage(img, null, null);
int left1 = buffImg.getRGB(100, 110);
Color leftc1 = new Color(left1);
System.out.println("test");
if(leftc1.getGreen() < 20)
{
test = 1;
}
if(leftc1.getGreen() > 20)
{
test = 0;
}
}
}
}
Als zweites die Class, die die erzeugten Daten aus der Variable auslesen und in der Cionsole wiedergeben soll:
Code:
package grabber;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.format.*;
import javax.media.util.*;
import com.sun.image.codec.jpeg.*;
import com.sun.media.protocol.v4l.DataSource;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.media.Buffer;
import javax.swing.JFrame;
import icommand.nxt.Sound;
import icommand.nxt.comm.NXTCommand;
import icommand.nxt.*;
import javax.imageio.ImageIO;
import grabber.gui.*;
import grabber.grab;
/**
*
* @author Google, NetBeans
*/
public class Main
{
public static void main(String [] args) throws Exception
{
while(true)
{
System.out.println(grab.test);
}
}
}
Das funktioniert auch insoweit, dass ich den Anfangswert der Variable kontinuirlich angezeigt bekomme (000000000...) Da ich nur Nullen bekomme bin ich mir sicher, dass die if schleifen aus dem ersten Code garnicht ausgeführt werden. Wie bekomm ich das nun hiin, dass Code eins die Sachen auswertet, sie in der Variable speichert und Code 2 sie sich abholt und mir ausgibt. Ist das ansatzweise richtig oder bin ich total auf dem Holzpfad.
Danke schon einmal.
[/code]