http://blog.csdn.net/xing_sky/article/details/43482213

原文地址:http://blog.csdn.net/zajin/article/details/9288239

本人菜鸟级人物,由于要搞个人脸识别登录(JAVACV),百度谷歌了一下午,找了网上简单的样例代码来试,可是老是调试不过,出现CaptureDeviceManager.getDevice 为空指针。郁闷了一下午。现在终于搞出来了。特此纪念一下,因为在网上找了大半天,发现这方面的介绍不是很多,因此也希望能为后来的学习者有所帮助,少走些弯路。

功能:实现摄像头调用

步骤:1、到sun下载JMF,并且安装,安装后需重启电脑。下载链接http://www.oracle.com/technetwork/java/javase/download-142937.html

2、创建设置JMF的环境变量,"计算机"->"系统属性"->"高级环境设置"->"高级"->"环境变量"

变量名:"JMFHOME"          变量值:"C:\Program Files\JMF2.1.1e"

变量名:"CLASSPATH"      变量值:";%JMFHOME%\lib\jmf.jar;%JMFHOME%\lib\sound.jar"

如图:

3、打开安装好了的JMF,在C:\Program Files\JMF2.1.1e\bin目录下打开“jmfregistry.exe”,选择“Capture Devices” 然后按左下角“Detect Capture Devices”按钮,多按几次,直到左边栏中出现“ vfw:Microsoft WDM Image Capture (Win32):0” ,则说明JMF已经注册了摄像头,到此就可以关闭了。

如图:

4、现在可以用Eclipse 编程了。创建一个工程,把下面样例代码复制进去,在该工程点击右键选择Build Path ->Configure Build Path... ->Libraries ->Add External JARs... 然后把安装的JMF里面\lib目录下的几个Jar包导入进来。

如图:

5、运行即可。

import java.awt.BorderLayout;
import java.awt.Component;
import javax.media.CaptureDeviceInfo;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.cdm.CaptureDeviceManager;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame{
public static Player player = null;
private CaptureDeviceInfo deviceInfo = null;
private MediaLocator mediaLocator = null;
private Component component = null;
private JPanel vedioPanel = null; String str1 = "vfw:Logitech USB Video Camera:0"; //获取USB摄像头的字符串
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; //获取本地摄像头的字符串
// Creates a new instance of CameraTest
public Test() {
init();
}
public void init(){
deviceInfo = CaptureDeviceManager.getDevice(str2); //根据字符串获取采集设备(摄像头)的引用
// System.out.println(deviceInfo); //显示采集设备(摄像头)的信息
// System.out.println(deviceInfo.getName()); //显示采集设备(摄像头)的设备名称
mediaLocator = deviceInfo.getLocator(); //获取采集设备的定位器的引用,需要根据此引用来创建视频播放器 try{
player = Manager.createRealizedPlayer(mediaLocator);// 利用mediaLocator 获取一个player
component = player.getVisualComponent();
if (component != null){
vedioPanel = new JPanel();
vedioPanel.add(component, BorderLayout.NORTH);
this.add(vedioPanel);
this.pack(); // 自动分配窗体大小
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
player.start();
}
}catch(Exception e){
e.printStackTrace();
}
} public static void main(String[] args) {
new Test();
}
}

  

java调用摄像头的更多相关文章

  1. Java调用摄像头截图

    使用webcam-capture替换JMF调用摄像头 最近有个需要通过java调用摄像头,并截图的需求,在网上找了下资料,大部分是用一个叫jmf的库,但是jmf已经几百年没有更新,用起来各种问题.后来 ...

  2. java调用摄像头了

    http://www.cnblogs.com/cnweiblog/p/4602207.html

  3. java javacv调用摄像头并拍照

    调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...

  4. JAVA中通过JavaCV实现跨平台视频/图像处理-调用摄像头

    一.简介 JavaCV使用来自计算机视觉领域(OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, librealsense, CL PS3 E ...

  5. 【Java】调用摄像头进行拍照并保存【详细】以及处理no jniopencv_core in java.library.path的一种方法

    [之前困扰笔者的问题描述]   date:2019.12.18 网上教程很多,但是没有看见完整的,所以写一个出来. 调用摄像头需要javaCV的jar包和openCV的jar包,现在已经不需要安装包了 ...

  6. Android入门(十六)调用摄像头相册

    原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xml ...

  7. Android开发中如何调用摄像头的功能

    我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码     & ...

  8. C# winfrom调用摄像头扫描二维码(完整版)

    前段时间看到一篇博客,是这个功能的,参考了那篇博客写了这个功能玩一玩,没有做商业用途.发现他的代码给的有些描述不清晰的,我就自己整理一下发出来记录一下. 参考博客链接:https://www.cnbl ...

  9. Android 调用摄像头功能【拍照与视频】

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ma_hoking/article/details/28292973 应用场景: 在Android开发 ...

随机推荐

  1. 大话重构 之 原来反OO天天见

    在OO(面向对象)时代长大的小伙伴们一定记得: 面向对象的基石:把数据和依赖该数据的行为封装在一起. 但我们经常遇到一个类依赖其它类的数据的情况.不多的话,正常,对象间势必存在交互,毕竟完全独立的类无 ...

  2. Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

    Jdk12 都发布了, 我也下载一个玩一玩吧.刚准备要下载,发现之前已经下载了一个11, 那就11 吧,也不用太新了. 安装了jdk11,习惯性的设置了一下环境变量: JAVA_HOME=D:\too ...

  3. thinkphp5加密解密

    thinkphp5目前没有提供加密解密类,但是tp3.2中提供了好几种加密解密方法,我们可以吧3.2的这些类拿来使用. 1.将tp3.2中ThinkPHP\Library\Think的Crypt文件夹 ...

  4. Ehab and subtraction(思维题)

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  5. Codeforces Round #364 (Div. 2) A

    Description There are n cards (n is even) in the deck. Each card has a positive integer written on i ...

  6. 源码分析Thread

    多次start ?? IlleageStateException

  7. linux使用echo指令向文件写入内容

    echo "aaa">test.sh 该指令会覆盖文件原内容,如果文件不存在,则创建 echo "aaa">>test.sh 追加文件内容 h ...

  8. (转)Linux最常用指令及快捷键 Linux学习笔记

    Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...

  9. ASP.NET相关

    1.委托:把一个方法当作参数传到另一个方法中 扩展方法:1.静态类 2.静态方法 3.this关键字 using System; using System.Collections.Generic; u ...

  10. 性能测试学习第十一天_Analysis

    Analysis的功能:对测试运行结果进行查看,分析和比较 导入分析文件:loadrunner results文件和analysis session文件 Analysis窗口: 1.会话浏览器窗格 2 ...