Hallo zusammen,
ich habe es mittlerweile geschaft mittels Java Media Framework meine Webcam ansprechen zu können. Das Teil wird jedoch in einem Fenster von von den Treibern der cam angezeigt. ich würde das Teil aber gernen auf ein jpanel, dass auf meinem Frame liegt projezieren. Weiß einer wie soetwas funktionieren könnte? hier einmal der Quelltext meiner Klassen:
Das ist die Klasse die das Image grabbt und abspielt.
Das wäre nen Ansatz ....hat aber nicht geklappt
ich habe es mittlerweile geschaft mittels Java Media Framework meine Webcam ansprechen zu können. Das Teil wird jedoch in einem Fenster von von den Treibern der cam angezeigt. ich würde das Teil aber gernen auf ein jpanel, dass auf meinem Frame liegt projezieren. Weiß einer wie soetwas funktionieren könnte? hier einmal der Quelltext meiner Klassen:
Das ist die Klasse die das Image grabbt und abspielt.
Java:
package bildanalysierer;
import javax.media.*;
import java.awt.*;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import java.io.File;
import javax.swing.JFrame;
public class ImgGrabber
{
boolean saved = false;
File file = null;
public Player player = null;
public Image image = null;
public Buffer buffer = null;
public BufferToImage btoi = null;
public ImgGrabber()
{
String mediaFile = "vfw:Micrsoft WDM Image Capture (Win32):0";
try
{
MediaLocator mlr = new MediaLocator(mediaFile);
player = Manager.createRealizedPlayer(mlr);
if (player.getVisualComponent() != null) {
//setSize(200, 200);
}
}
catch (Exception e)
{
System.out.println(e);
}
}
public void startPlayer()
{
player.start();
}
public void stopplayer()
{
player.stop();
}
public void closePlayer()
{
player.stop();
player.deallocate();
player.close();
}
public Image getImage()
{
String mlcoation = "vfw:Micrsoft WDM Image Capture (Win32):0";
FrameGrabbingControl fgc = (FrameGrabbingControl) player
.getControl("javax.media.control.FrameGrabbingControl");
buffer = fgc.grabFrame();
btoi = new BufferToImage((VideoFormat) buffer.getFormat());
image = btoi.createImage(buffer);
return image;
}
public Component getComponent()
{
return player.getVisualComponent();
}
}
Das wäre nen Ansatz ....hat aber nicht geklappt
Java:
package bildanalysierer;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Max
*/
public class ImagePanel extends JPanel {
public Image myimg;
public ImagePanel() {
setLayout(new FlowLayout());
setSize(300, 300);
setVisible(true);
}
public void setImage(Image image) {
this.myimg = image;
repaint();
}
public void paint(Graphics g) {
if (myimg != null) {
g.drawImage(myimg, 0, 0, this);
}
}
}