zoukankan      html  css  js  c++  java
  • java调用摄像头

    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 FilesJMF2.1.1e"

    变量名:"CLASSPATH"      变量值:";%JMFHOME%libjmf.jar;%JMFHOME%libsound.jar"

    如图:

      3、打开安装好了的JMF,在C:Program FilesJMF2.1.1ein目录下打开“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();
        }
    }
    

      

  • 相关阅读:
    第十二周总结
    第十一周总结
    第十周总结
    人月神话阅读笔记04
    第九周总结
    第八周总结
    人月神话阅读笔记03
    主成分分析(PCA)算法介绍及matlab实现案例
    Cross-entropy
    压缩算法--TP(1978)
  • 原文地址:https://www.cnblogs.com/cdsj/p/5892504.html
Copyright © 2011-2022 走看看