الفريق العربي للبرمجةأرشيف المنتديات · 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

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

عدد الزوار حالياً

المتواجدون خلال آخر ساعة · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…