JMF调用摄像头粉屏的问题(win10 64位系统)
最近突然想做一個人臉識別的程序,圖像的獲取可以從本地或者攝像頭獲取。
1、從本地獲取比較簡單,不多說。
2、從攝像頭獲取圖片。網(wǎng)上查了一下,都是用的JMF(但是JMF已經(jīng)很久沒有更新,而且只支持32位的JDK,如果知道有更好的麻煩推薦一下!)
下載JMF(http://www.oracle.com/technetwork/java/javase/download-142937.html)
安裝
安裝完之后桌面上回出現(xiàn)JMStudio的快捷圖標(biāo),
?點開測試一下,file->capture;
攝像頭驅(qū)動正常加載,點擊OK,然后
我靠,這什么鬼?一片粉啊,一定要這么嫩嗎 -_-||。 晃動一下窗口,會顯示圖像,但是是卡住的。
攝像頭正常打開了,但是顯示不了畫面,這樣完全沒用啊!于是就去網(wǎng)上查了一下,沒有答案,再看看回答時間,瞬間懷疑自己是不是用了個老古董了!
?
沒辦法,先試著寫程序吧
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); //加載設(shè)備驅(qū)動 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 }運行之后發(fā)現(xiàn)一樣出現(xiàn)粉屏的問題, 弄了一會兒發(fā)現(xiàn)好像在畫面上覆蓋了一層JLabel或者JTextArea就可以正常顯示圖像(感覺好low啊/捂臉),可能是打開的方式不對!
最后無意中發(fā)現(xiàn),只要窗體對準(zhǔn)電腦屏幕的最左邊就可以正常顯示了,這程序是不是有強迫癥啊?_?
?
好吧,雖然莫名其妙,但是也勉強算是解決了顯示問題了。
下面就是截圖了,于是就用了笨辦法,屏幕截圖(求聰明的辦法^_^):
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 }成功獲取圖像
?
總結(jié):JMF調(diào)用攝像頭產(chǎn)生粉屏,把窗體放在屏幕最左側(cè)可以正常顯示,具體原因未知!個人猜測可能是系統(tǒng)不兼容的造成。
?
轉(zhuǎn)載于:https://www.cnblogs.com/jiuliblog-2016/p/6905349.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的JMF调用摄像头粉屏的问题(win10 64位系统)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ionic3 环境搭建以及基础配置实现(
- 下一篇: 了解Web及网络基础——《图解http》