2013-06-12 172 views
0

我有一個使用OpenCV使用網絡攝像頭拍照的程序。它在Windows上像一個魅力,但它不適用於OSx。網絡攝像機視圖應顯示的框架保持空白。當我拍照時,它只是顯示一個黑色的虛空,好像它找不到攝像頭OpenCV在mac上無法正常工作

public void run(){ 
     try { 
      grabber = new VideoInputFrameGrabber(0); 
      grabber.start(); 
      while (active) { 
       IplImage originalImage = grabber.grab(); 
       Label.setIcon(new ImageIcon(originalImage.getBufferedImage())); 
      } 
      grabber.stop(); 
      grabber.flush(); 

     } catch (Exception ex) { 
      //Logger.getLogger(ChPanel.class.getName()).log(Leve l.SEVERE, null, ex); 
     } 

    } 

    public BufferedImage saveImage(){ 
     IplImage img; 
     try { 
      //capture image 
      img = grabber.grab(); 
      // save to file 
      File outputfile = new File(Project.getInstance().getFileURLStr() + " capture" + fotoCount++ + ".jpg"); 
      ImageIO.write(img.getBufferedImage(), "jpg", outputfile);  

      //get file and set it in the project library 
      BufferedImage ImportFile = ImageIO.read(outputfile); 
      Project p = Project.getInstance(); 
      MainScreen ms = MainScreen.getInstance(); 
      ImageIcon takenPhoto = new ImageIcon(ImportFile); 
      p.setNextImage(takenPhoto); 
      ms.setPanels(); 
      return ImportFile; 
     } catch (com.googlecode.javacv.FrameGrabber.Exception e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 

    } 

有沒有人知道如何解決這個問題?我懷疑一些關於權利使用網絡攝像頭或類似的

回答

1
grabber = new VideoInputFrameGrabber(0); 

這裏0東西爲Capture device number 0

規定可能是數零裝置不適用於視頻拍攝

使用此代碼分別獲取設備和編號列表。

import com.googlecode.javacv.cpp.videoInputLib.videoInput; 
class Main { 


    public static void main(String[] args) { 
      int n=videoInput.listDevices(); 
      for(int i=0;i<n;i++) 
     { 
      System.out.println(i+" = "+videoInput.getDeviceName(i)); 

     } 

} 
} 

,然後指定數量爲該設備

grabber = new VideoInputFrameGrabber(1); // 0 or 1 or 2 
+0

我們會盡力,謝謝! –

0

要使用網絡攝像頭我使用這個庫webcam-capture可以easely添加使用Maven OpenCV的依賴交互。這是一個偉大的圖書館

相關問題