Merhaba.Javada kishinin resmini upload ede bilmesi icin bir jButton olucak buttona vurdugunuz zaman seceneklerden resim bilgisayardanmi eklensin kameradanmi? kamera secildigi zaman capturing yapila bilmesi icin ne yapmama lazim? marvin deye bir framework buldum ama caputring icin kodu bir turlu bulamadim(( teshekkurler

soruldu: 13 Tem '12, 13:24

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%

java media kütüphanesini kullanıcaksın galiba , bir arkadaş yapıyordu.

(13 Tem '12, 15:09) transistör transist%C3%B6r's gravatar image

Bir kod buldum.hic bir jara ihtiyac yok.sadece kodu yapistir ve run et.Tesekkurler

/ * To change this template, choose Tools | Templates * and open the template in the editor. / package elektronsaat; / * To change this template, choose Tools | Templates * and open the template in the editor. /

/ * @author Comp Cience / import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.util.Calendar; import javax.media.Buffer; import javax.media.CaptureDeviceInfo; import javax.media.CaptureDeviceManager; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; import javax.media.control.FrameGrabbingControl; import javax.media.format.VideoFormat; import javax.media.util.BufferToImage; import javax.swing.JButton; import javax.swing.JComponent;

public class Main extends Panel implements ActionListener { public static Player player=null; public CaptureDeviceInfo di=null; public MediaLocator ml=null; public JButton capture=null; public Buffer buf=null; public Image img=null; public VideoFormat vf=null; public BufferToImage btoi=null; public ImagePanel imgpanel=null; public int capturenumber=0;

public Main(){
    setLayout(new BorderLayout());
    setSize(320,550);
    imgpanel=new ImagePanel();
    capture= new JButton("Capture");
    capture.addActionListener(this);
    String str = "vfw:Microsoft WDM Image Capture (Win32):0";
    di=CaptureDeviceManager.getDevice(str);
    ml = new MediaLocator(str);
    try{
        player=Manager.createRealizedPlayer(ml);
        player.start();
        Component comp;
        if((comp = player.getVisualComponent())!=null){
            add(comp,BorderLayout.NORTH);
        }
        add(capture,BorderLayout.CENTER);
        add(imgpanel,BorderLayout.SOUTH);
    }
    catch(Exception ex){
        ex.printStackTrace();
    }
}
public static void main(String[] args){
    Frame f=new Frame("Take picture");
    Main cf = new Main();
    f.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e){
            playerclose();
            System.exit(0);
        }
    });
    f.add(cf);
    f.pack();
    f.setSize(320, 550);
    f.setVisible(true);
}

public static void playerclose(){
    player.close();
    player.deallocate();
}

public void actionPerformed(ActionEvent e) {
    JComponent c = (JComponent) e.getSource();
    if(c==capture){
        FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
        buf = fgc.grabFrame();
        btoi= new BufferToImage((VideoFormat)buf.getFormat());
        img = btoi.createImage(buf);
        imgpanel.setImage(img);
        Calendar cal= Calendar.getInstance();
        @SuppressWarnings("static-access")
        int data = (cal.getTime().getYear()+1900)*10000+ (cal.getTime().getMonth()+1)*100+cal.getTime().getDate();
        saveJPG(img,"D:\\\\"+ data +capturenumber+".jpg");
        capturenumber++;
    }
}

private void saveJPG(Image img, String s) {
    BufferedImage bi= new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
    Graphics2D g2=bi.createGraphics();
    g2.drawImage(img, null, null);
    FileOutputStream out=null;
    try{
        out = new FileOutputStream(s);
    }
    catch(java.io.FileNotFoundException ex){
        ex.printStackTrace();
    }
    JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(out);
    JPEGEncodeParam param= encoder.getDefaultJPEGEncodeParam(bi);
    param.setQuality(0.5f, false);
    encoder.setJPEGEncodeParam(param);
    try{
        encoder.encode(bi);
        out.close();
    }
    catch(Exception ex){
        ex.printStackTrace();
    }
}

public class ImagePanel extends Panel{
    public Image myimg=null;
    public ImagePanel(){
        setLayout(null);
        setSize(320,240);
    }
    public void setImage(Image img){
        this.myimg=img;
        repaint();
    }
    @Override
    public void paint(Graphics g){
        if(myimg != null){
            g.drawImage(myimg,0,0,this);
        }
    }
}

}

permanent link

cevaplandı: 14 Tem '12, 09:32

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%

usta bu kodu denemedim ama import larda media packeage ını kullanıyor jmf jar larını ihtiyaç duyabilir

(16 Tem '12, 02:54) trueLife trueLife's gravatar image
    import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
public class GrabberShow implements Runnable {

    IplImage image;
    CanvasFrame canvas = new CanvasFrame("Web Cam");
    public GrabberShow() {
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    }
    @Override
    public void run() {
        FrameGrabber grabber = new VideoInputFrameGrabber(0); 
        int i=0;
        try {
            grabber.start();
            IplImage img;
            while (true) {
                img = grabber.grab();
                if (img != null) {
                    cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
                    cvSaveImage((i++)+"-capture.jpg", img);

                    canvas.showImage(img);
                }

            }
        } catch (Exception e) {
        }
    }
}

javacv kütüphanesini indirip projene dahil edersen yukarıdaki kodlar işini görebilir

permanent link

cevaplandı: 13 Tem '12, 23:59

Ufukgsate's gravatar image

Ufukgsate
1156712
cevap kabul oranı: 20%

ben javacv-yi arashtirdim.ama hangisini add edeceyimi bilmiyorum.direk link vere bilirmisiniz?teshekkurler

(14 Tem '12, 02:37) Serxan Serxan's gravatar image

javacv yi indirdikten sonra opencv nin kullandığı bazı lib header dosyaları var onları sistem path e eklemen gerekli hangilerinin eklendiğini su anda tam olarak hatırlamıyorum ama internette javacv environment settings diye aratırsan bişeyler çıkacaktır daha önce javacv ile bikaç çalışmam olmuştu sorunsuz çalısıyor ancak tabiki c++ persormansı daha yüksek

(16 Tem '12, 02:52) trueLife trueLife's gravatar image

jmf (java media framework) çok çok uzun zamandır güncellenmiyor diye biliyorum, daha önce webcam v.s. görüntü almak için kullandım, alternatif varsa tercih edilebilir

permanent link

cevaplandı: 17 Tem '12, 02:09

nht's gravatar image

nht
95651720
cevap kabul oranı: 33%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×1

Soruldu: 13 Tem '12, 13:24

Görüntüleme: 1,097 kez

Son güncelleme: 17 Tem '12, 02:09

powered by BitNami OSQA