الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أخذ صورة .. Webcam

بدأه Eng.Amal في 10 أبريل 2009 · 5 رد · 798 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

أحاول كثيراً أخذ صورة بال

WebCam

عن طريق الجافا كود

هل لكم بمساعدتي اذا هنالك حلول .. وضعت لأعضاء قبلي ..

#2

استخدم jmf

#3

انا استخدمت هذا الكود

import javax.swing.*;

import javax.swing.event.*;

import java.io.*;

import javax.media.*;

import javax.media.format.*;

import javax.media.util.*;

import javax.media.control.*;

import javax.media.protocol.*;

import java.util.*;

import java.awt.*;

import java.awt.image.*;

import java.awt.event.*;

import com.sun.image.codec.jpeg.*;

public class SwingCapture 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 SwingCapture()

{

setLayout(new BorderLayout());

setSize(320,550);

imgpanel = new ImagePanel();

capture = new JButton("Capture");

capture.addActionListener(this);

String str1 = "vfw:Logitech USB Video Camera:0";

String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";

di = CaptureDeviceManager.getDevice(str2);

ml = di.getLocator();

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 e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

Frame f = new Frame("SwingCapture");

SwingCapture cf = new SwingCapture();

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

playerclose();

System.exit(0);}});

f.add("Center",cf);

f.pack();

f.setSize(new Dimension(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)

{

// Grab a frame

FrameGrabbingControl fgc = (FrameGrabbingControl)

player.getControl("javax.media.control.FrameGrabbingControl");

buf = fgc.grabFrame();

// Convert it to an image

btoi = new BufferToImage((VideoFormat)buf.getFormat());

img = btoi.createImage(buf);

// show the image

imgpanel.setImage(img);

// save image

saveJPG(img,"c:\\test.jpg");

}

}

class ImagePanel extends Panel

{

public Image myimg = null;

public ImagePanel()

{

setLayout(null);

setSize(320,240);

}

public void setImage(Image img)

{

this.myimg = img;

repaint();

}

public void paint(Graphics g)

{

if (myimg != null)

{

g.drawImage(myimg, 0, 0, this);

}

}

}

public static 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 io)

{

System.out.println("File Not Found");

}

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 (java.io.IOException io)

{

System.out.println("IOException");

}

}

}

بس مشكلته يظهر لي

screen

abg81191.jpg

كمبيوتري مافيه كيمرا

بس انا شريت كيمرا و ركبتها على الكمبيوتر ..

ياليت .. تقدرون تساعدوني ..

:huh:

#4

وعليكم السلام ورحمه الله وبركاته ،

هل تعمل الكاميرا من الأساس ؟ وهل تعمل في JMF stduio (لا أذكر الأسم ولكنه شيئا من هذا القبيل) ، لأنها اذا لم تعمل فيه فلن تعمل برمجيا ..

وهل الصوره التي حفظت في C:\\test.jpg بنفس الشكل ؟

جرب هذا الكود :

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.*;

/**
* Grabs a frame from a Webcam, overlays the current date and time,
* and saves the frame as a PNG to c:\webcam.png
*
* @author David
* @version 1.0, 16/01/2004
*/

public class FrameGrab
{

 public static void main(String[] args) throws Exception
 {
   // Create capture device
   CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice(
	   "vfw:Microsoft WDM Image Capture (Win32):0");

   Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
   player.start();

   // Wait a few seconds for camera to initialise (otherwise img==null)
   Thread.sleep(2500);

   // Grab a frame from the capture device
   FrameGrabbingControl frameGrabber = 
(FrameGrabbingControl)player.getControl(
	   "javax.media.control.FrameGrabbingControl");

   Buffer buf = frameGrabber.grabFrame();

   // Convert frame to an buffered image so it can be processed and saved
   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);

   // Overlay curent time on image
   //g.setColor(Color.RED);
  // g.setFont(new Font("Verdana", Font.BOLD, 16));
   //g.drawString((new Date()).toString(), 10, 25);

   // Save image to disk as PNG
   ImageIO.write(buffImg, "jpg", new File(
	   "c:\\webcam.jpg"));

   // Stop using webcam
   player.close();
   player.deallocate();
   System.exit(0);
 }
}

أيضا جرب هذا المثال -موقع صيني- :

Capture-3 SnapShot

وستجد أيضا في الصفحه الرئيسيه حوالى 14 مثال في jmf متنوعه ما بين rtp وتسجيل الصوت وكم شغله :

JMF

بالتوفيق :)

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 10 أبريل 2009 في 20:18

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5

لا للأسف ما قاعد يشتغل مع الــ

JMStudio

: (

أشلون أقدر أشغله عليه ..!

#6

جربي

JMF Registry

capture devices

detect capture device

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة