2009-09-05 3 views
6

私はswing Javaで1つのGUIアプリケーションを作成しています。私のGUIにWebカムを統合する必要があります。どの身体にもこれについての考えがありますか?JavaのSwingアプリケーションにWebcamを統合するには?

+1

Javaのメディアフレームワークがあります。 JMFを使用すると、ムービーを再生したり、ウェブカメラを見ることができます。おそらくそれはあなたのためのソリューションです –

答えて

2

Freedom for Media in Javaは、JMF(API互換)の代替実装です。あなたがOpenSourceライブラリを使いたい場合に備えて。

7
  1. ダウンロードしてFrameGrabberソースファイルをダウンロードし、プロジェクトライブラリ
  2. JMF
  3. 追加jmf.jarを使っをインストールして、ビデオをキャプチャを開始するために、次のよう
  4. はそれを使用してプロジェクトに追加します。

    new FrameGrabber()。start();

基本となるイメージを取得するには、FrameGrabberリファレンスでgetBufferedImage()を呼び出します。たとえば、33ミリ秒ごとにタイマータスクでこれを実行できます。

サンプルコード:

public class TestWebcam extends JFrame { 
    private FrameGrabber vision; 
    private BufferedImage image; 
    private VideoPanel videoPanel = new VideoPanel(); 
    private JButton jbtCapture = new JButton("Show Video"); 
    private Timer timer = new Timer(); 

    public TestWebcam() { 
    JPanel jpButton = new JPanel(); 
    jpButton.setLayout(new FlowLayout()); 
    jpButton.add(jbtCapture); 

    setLayout(new BorderLayout()); 
    add(videoPanel, BorderLayout.CENTER); 
    add(jpButton, BorderLayout.SOUTH); 
    setVisible(true); 

    jbtCapture.addActionListener(
     new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       timer.schedule(new ImageTimerTask(), 1000, 33); 
      } 
     } 
    ); 
    } 

    class ImageTimerTask extends TimerTask { 
    public void run() { 
     videoPanel.showImage(); 
    } 
    } 

    class VideoPanel extends JPanel { 
     public VideoPanel() { 
     try { 
      vision = new FrameGrabber(); 
      vision.start(); 
     } catch (FrameGrabberException fge) { 
     } 
     } 

     protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     if (image != null) 
      g.drawImage(image, 10, 10, 160, 120, null); 
     } 

     public void showImage() { 
      image = vision.getBufferedImage(); 
      repaint(); 
     } 
    } 

    public static void main(String[] args) { 
     TestWebcam frame = new TestWebcam(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(190, 210); 
     frame.setVisible(true); 
    } 
} 
+0

ありがとうございますJRL、私はそれを実装しようとしています、私はそれが自動的に私のウェブカメラを検出するかどうかを知りたいですか? –

関連する問題