Win7系統下JAVA攝像頭調用_執行個體代碼介紹。由于要搞個人臉識别登入(JAVACV),百度谷歌了一下午,找了網上簡單的樣例代碼來試,可是老是調試不過,出現CaptureDeviceManager.getDevice 為空指針。郁悶了一下午。現在終于搞出來了。特此紀念一下,因為在網上找了大半天,發現這方面的介紹不是很多,是以也希望能為後來的學習者有所幫助,少走些彎路。
功能:實作攝像頭調用
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();
}
}