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調用攝像頭產生粉屏,把窗體放在屏幕最左側可以正常顯示,具體原因未知!個人猜測可能是系統不兼容的造成。
?
轉載于:https://www.cnblogs.com/jiuliblog-2016/p/6905349.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JMF调用摄像头粉屏的问题(win10 64位系统)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ionic3 环境搭建以及基础配置实现(
- 下一篇: Windows中使用wget整站下载