JAVA摄像头调用_实例---Win7

本人菜鸟级人物,由于要搞个人脸识别登录(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"

如图:JAVA摄像头调用_实例---Win7_第1张图片

JAVA摄像头调用_实例---Win7_第2张图片

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

如图:

JAVA摄像头调用_实例---Win7_第3张图片

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

如图:

JAVA摄像头调用_实例---Win7_第4张图片


5、运行即可。

[java]  view plain copy
  1. import java.awt.BorderLayout;  
  2. import java.awt.Component;  
  3. import javax.media.CaptureDeviceInfo;  
  4. import javax.media.Manager;  
  5. import javax.media.MediaLocator;  
  6. import javax.media.Player;  
  7. import javax.media.cdm.CaptureDeviceManager;  
  8. import javax.swing.JFrame;  
  9. import javax.swing.JPanel;  
  10. public class Test extends JFrame{  
  11.     public  static Player player = null;  
  12.     private CaptureDeviceInfo deviceInfo = null;  
  13.     private MediaLocator mediaLocator = null;  
  14.     private Component component = null;  
  15.     private JPanel vedioPanel = null;  
  16.       
  17.     String   str1   =   "vfw:Logitech   USB   Video   Camera:0";      //获取USB摄像头的字符串  
  18.     String   str2   =   "vfw:Microsoft WDM Image Capture (Win32):0";    //获取本地摄像头的字符串  
  19.     // Creates a new instance of CameraTest   
  20.     public Test() {  
  21.         init();  
  22.     }  
  23.     public void init(){  
  24.         deviceInfo = CaptureDeviceManager.getDevice(str2);  //根据字符串获取采集设备(摄像头)的引用  
  25.      //   System.out.println(deviceInfo);         //显示采集设备(摄像头)的信息  
  26.      //   System.out.println(deviceInfo.getName());     //显示采集设备(摄像头)的设备名称  
  27.         mediaLocator = deviceInfo.getLocator(); //获取采集设备的定位器的引用,需要根据此引用来创建视频播放器  
  28.           
  29.         try{  
  30.             player = Manager.createRealizedPlayer(mediaLocator);// 利用mediaLocator 获取一个player  
  31.             component = player.getVisualComponent();  
  32.             if (component != null){  
  33.                 vedioPanel = new JPanel();  
  34.                 vedioPanel.add(component, BorderLayout.NORTH);  
  35.                 this.add(vedioPanel);  
  36.                 this.pack();    // 自动分配窗体大小  
  37.                 this.setResizable(false);  
  38.                 this.setDefaultCloseOperation(EXIT_ON_CLOSE);  
  39.                 this.setVisible(true);  
  40.                 player.start();  
  41.             }  
  42.         }catch(Exception e){  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46.       
  47.     public static void main(String[] args) {  
  48.         new Test();  
  49.     }  
  50. }  

你可能感兴趣的:(JAVA摄像头调用_实例---Win7)