1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
import de.humatic.dsj.DSCapture;
import de.humatic.dsj.DSFilterInfo;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Webcam implements java.beans.PropertyChangeListener, Runnable{
private DSCapture dsc = null, dsc2 = null;
private WebcamPanel wp1,wp2;
public WebcamPanel getWp1() {
return wp1;
}
public WebcamPanel getWp2() {
return wp2;
}
public Webcam(){
DSFilterInfo[][] qD = DSCapture.queryDevices();
DSFilterInfo dNR = DSFilterInfo.doNotRender();
dsc = new DSCapture(0, qD[0][0], false, dNR, this);
dsc2 = new DSCapture(0, qD[0][1], false, dNR, this);
wp1 = new WebcamPanel();
wp2 = new WebcamPanel();
}
public BufferedImage getImageFromFirstWebcam(){
return dsc.getImage();
}
public BufferedImage getImageFromSecondWebcam(){
return dsc2.getImage();
}
public void propertyChange(PropertyChangeEvent evt){}
@Override
public void run() {
while(true){
wp1.setImage(getImageFromFirstWebcam());
wp2.setImage(getImageFromSecondWebcam());
wp1.updatePanelAndRepaint();
wp2.updatePanelAndRepaint();
// to avoid jerky images
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class WebcamPanel extends JPanel{
private static final long serialVersionUID = 5882379168162897487L;
private BufferedImage image;
public BufferedImage getImage() {
return image;
}
public void setImage(BufferedImage image) {
this.image = image;
}
public WebcamPanel(){
setPreferredSize(new Dimension(320,240));
}
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
public void updatePanelAndRepaint() {
setImage(image);
repaint();
updateUI();
}
}
public static void main(String[] args){
Webcam w = new Webcam();
JFrame f = new JFrame("2 webcams");
Webcam.WebcamPanel p1 = w.getWp1();
Webcam.WebcamPanel p2 = w.getWp2();
FlowLayout layout = new FlowLayout();
f.setLayout(layout);
p1.setVisible(true); p2.setVisible(true);
f.add(p1); f.add(p2);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
Thread thread = new Thread(w);
thread.start();
}
} |
Partager