最近在做jmf的视频通信项目,于是先找了个代码连接下摄像头;
要求:jmf包(最好包含5个原始包)
jmf安装(没有测试这个条件是否必要,我直接先安装了)
eclipse下运行
代码如下
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
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.awt.image.RenderedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.imageio.ImageIO;
import javax.media.Buffer;
import javax.media.CannotRealizeException;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
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.JFrame;
import javax.swing.JPanel;
import com.sun.media.protocol.vfw.DataSource;
public class FirstCapture extends JPanel implements ActionListener{ private CaptureDeviceInfo captureDeviceInfo=null;
private MediaLocator mediaLocator=null;
private static Player player=null;
//private ImagePanel imagePanel=null;
private JButton capture;
private Buffer buffer=null;
private VideoFormat videoFormat=null;
private BufferToImage bufferToImage=null;
private Image image=null;
public FirstCapture()
{
setLayout(new BorderLayout());
setSize(320,550); captureDeviceInfo=CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); //这里放置的是视频驱动
mediaLocator=new MediaLocator("vfw://0"); //这里是视频地址
//imagePanel=new ImagePanel();
capture=new JButton("拍照");
capture.addActionListener(this);
DataSource ds = new DataSource();
ds.setLocator(mediaLocator);
try {
player=Manager.createRealizedPlayer(mediaLocator);
player.start();
Component comp;
Component comp1;
if((comp=player.getVisualComponent())!=null)
add(comp,BorderLayout.NORTH);
// if((comp1=player.getControlPanelComponent())!=null)
// add(comp1,BorderLayout.CENTER);
} catch (NoPlayerException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
} catch (CannotRealizeException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("ioe");
}
//add(imagePanel,BorderLayout.SOUTH);
add(capture,BorderLayout.CENTER);
}
@Override
public void print(Graphics g) {
// TODO Auto-generated method stub
super.print(g);
g.setColor(new Color(255,0,0));
g.drawLine(0, 0, 100, 100);
} public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame("FirstCapture");
FirstCapture cf = new FirstCapture();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
player.close();
System.exit(0);}});
f.add("Center",cf);
f.pack();
f.setSize(new Dimension(320,550));
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
FrameGrabbingControl fgc=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
buffer=fgc.grabFrame();
bufferToImage=new BufferToImage((VideoFormat)buffer.getFormat());
image=bufferToImage.createImage(buffer);
try {
ImageIO.write((RenderedImage) image, "jpg", new File("F:\\test.jpg"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// public static void saveImage(Image image,String path)
// {
// BufferedImage bi=new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
// Graphics2D g2 = bi.createGraphics();
// g2.drawImage(image, null, null);
// FileOutputStream fos=null;
// try {
// fos=new FileOutputStream(path);
//
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
}
- 大小: 3.5 KB
- 大小: 36.5 KB
分享到:
相关推荐
在Java编程环境中,调用摄像头...总的来说,Java调用摄像头拍照涉及到对多媒体框架的理解和使用,以及可能的权限管理。无论是通过JMF还是JavaFX,都需要对Java的IO和多线程有一定的掌握,以确保程序的稳定性和性能。
本项目聚焦于使用Java和OpenCV库调用摄像头进行拍照,并将拍摄的照片保存到本地,同时支持通过FTP服务上传至远程服务器。下面将详细阐述这个过程中涉及的关键知识点。 1. **Java编程语言**: Java是一种广泛使用的...
以上步骤是基础的Java调用摄像头拍照的流程。如果需要更高级的功能,比如预览、调整摄像头参数或者处理实时视频流,JavaCV库提供了丰富的API供开发者使用。同时,考虑到跨平台兼容性,确保在不同操作系统上测试代码...
Java调用电脑摄像头拍照实现例子,运用的是开源项目webcam-capture实现的;详情看这里:https://blog.csdn.net/qq_22078107/article/details/85927626
Java调用摄像头拍照是计算机视觉应用中的一个常见需求,尤其在开发基于Web的应用时,例如视频会议、在线证件照拍摄等。本示例基于`webcam-capture`库,一个强大的Java库,允许开发者轻松地访问和控制电脑上的摄像头...
本实例是关于如何使用Java调用摄像头的一个具体应用,通过集成Xuggler库来实现这一功能。Xuggler是一个强大的开源Java库,它允许开发者对音视频数据进行读取、编辑和写入操作。 首先,我们来了解一下Java调用摄像头...
以上就是使用Java和JMF调用摄像头拍照的基本流程。需要注意的是,JMF在某些现代操作系统上可能支持不够完善,可能会遇到兼容性问题。另外,JMF的API较为复杂,使用起来可能有些困难。为了解决这些问题,开发者可以...
本示例“java调用摄像头推流(针对安卓系统的英特尔处理器)”旨在教你如何在搭载英特尔处理器的Android设备上,利用Java编程语言调用摄像头并进行实时流媒体推送。以下是关于这个主题的详细知识讲解。 首先,我们...
使用Java调用摄像头进行拍照源码。 JMF安装文件下载地址: http://www.blackswansoft.com/songhaikang/files/myfile/Java Media Framework (JMF) API播放.rar
以下是对标题“java Swing 中调用摄像头拍照源码(有说明)”和描述的详细解释,以及相关知识点的深入探讨。 1. **Swing简介**: Swing是Java的GUI库,它基于Java Foundation Classes (JFC),提供了一套轻量级的...
在Java编程环境中,调用摄像头并保存图片是一个常见的需求,特别是在人脸识别或者其他计算机视觉的应用中。本教程将深入探讨如何利用Java结合Face++和JavaCV库来实现这一功能,特别是当视频流中检测到人脸时自动保存...
标题中的“多种方式ASP调用摄像头拍照并保存插件”是指在不同的Web开发环境中,如ASP、ASP.NET、JSP和PHP,实现调用用户电脑或服务器上的摄像头进行拍照,并将拍摄的照片保存到服务器的技术解决方案。这个插件可能...
在本文中,我们将深入探讨如何使用Java Swing和OpenCV库来调用摄像头,实现拍照功能,并将拍摄的照片本地保存以及支持上传至FTP服务器。通过理解并应用这些知识点,你可以创建一个用户友好的桌面应用程序,方便地...
<title>JS调用摄像头拍照 拍照"> <video id="video" width="640" height="480" autoplay></video> <canvas id="canvas" width="640" height="480"></canvas> document.getElementById('takePhoto')....
在Java编程环境中,实现“基于Java图片裁剪+调用摄像头并裁剪头上上传”的功能,需要结合多个技术点。这个项目可能包含了图像处理、设备交互以及网络上传等多个环节。以下将详细介绍这些关键知识点: 1. 图像处理:...
本示例涉及的是使用Java编程语言来实现在计算机开机时自动调用摄像头拍照并存储的功能。这样的功能可能适用于多种场景,例如安全监控、远程协作或是个人记录等。下面将详细介绍如何实现这个功能。 首先,我们需要...
在Android应用开发中,调用摄像头进行拍照是常见的功能之一,尤其在社交、影像记录类应用中不可或缺。然而,随着Android系统的不断更新,对于权限管理、API接口的改动,使得在不同版本上实现这一功能变得稍有复杂。...
"Android实现调用摄像头拍照与视频功能" Android 是一个功能强大且广泛使用的移动操作系统,具有丰富的硬件设备支持,包括摄像头、麦克风、GPS、加速度计、指南针等。在 Android 应用开发中,调用摄像头拍照和视频...
javacv 的开发jar,及简单demo,0.8版本免安装,支持windows-32位,及64位。其实和jdk安装版本有关,64位系统装32位jdk,或者32位系统可直接用opencv-2.4.9-0.8-windows-x86.jar 的dll;如64位系统装了64位jdk可直接...