JMF調用攝像頭粉屏的問題(win10 64位系統)


最近突然想做一個人臉識別的程序,圖像的獲取可以從本地或者攝像頭獲取。

1、從本地獲取比較簡單,不多說。

2、從攝像頭獲取圖片。網上查了一下,都是用的JMF(但是JMF已經很久沒有更新,而且只支持32位的JDK,如果知道有更好的麻煩推薦一下!)

下載JMF(http://www.oracle.com/technetwork/java/javase/download-142937.html)

安裝

安裝完之后桌面上回出現JMStudio的快捷圖標,

 點開測試一下,file->capture;

攝像頭驅動正常加載,點擊OK,然后

我靠,這什么鬼?一片粉啊,一定要這么嫩嗎 -_-||。 晃動一下窗口,會顯示圖像,但是是卡住的。

攝像頭正常打開了,但是顯示不了畫面,這樣完全沒用啊!於是就去網上查了一下,沒有答案,再看看回答時間,瞬間懷疑自己是不是用了個老古董了!

 

沒辦法,先試着寫程序吧

 1 public static Component loadDiver() 
 2     {
 3         //String str1 = "vfw:logitech usb video camera:0";
 4         String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
 5         
 6         deviceInfo = CaptureDeviceManager.getDevice(str2);   //加載設備驅動  7         mLocator = deviceInfo.getLocator();
 8         try
 9         {
10             
11             player = Manager.createRealizedPlayer(mLocator);  //獲取就緒的播放器 12             
13             Component cp;
14             if((cp = player.getVisualComponent())!=null)
15             {
16                 player.start();
17                 return cp;                               //返回窗體組件 18             }
19         }
20         catch(Exception e)
21         {
22             e.printStackTrace();
23         }
24         return null;
25     }

運行之后發現一樣出現粉屏的問題, 弄了一會兒發現好像在畫面上覆蓋了一層JLabel或者JTextArea就可以正常顯示圖像(感覺好low啊/捂臉),可能是打開的方式不對!

最后無意中發現,只要窗體對准電腦屏幕的最左邊就可以正常顯示了,這程序是不是有強迫症啊?_?

 

好吧,雖然莫名其妙,但是也勉強算是解決了顯示問題了。

下面就是截圖了,於是就用了笨辦法,屏幕截圖(求聰明的辦法^_^):

 1 BufferedImage buffImg = null;
 2 try
 3 {
 4    buffImg = (new Robot()).createScreenCapture(new
 5    Rectangle(0, 100, c1.getWidth(), c1.getHeight()-100));   //c1是上面方法返回的Component  6 }
 7 catch(AWTException e1)
 8 {
 9    e1.printStackTrace();
10 }
11 try
12 {
13    ImageIO.write(buffImg, "jpg", new File(path));
14 }
15 catch(IOException e1)
16 {
17    e1.printStackTrace();
18 }

成功獲取圖像

 

總結:JMF調用攝像頭產生粉屏,把窗體放在屏幕最左側可以正常顯示,具體原因未知!個人猜測可能是系統不兼容的造成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM