2011-07-10 207 views
4

任何人都知道,可用於從攝像頭錄製高分辨率圖像快照的目的Java庫?高分辨率圖像快照,在Java

更確切地說: - 檢測可用的網絡攝像頭(筆記本電腦可能有一個內置的一個和連接槽USB連接外接一個) - 選擇攝像頭的工作。 - 檢測圖像採集可用的分辨率(如:高達1280×1024的網絡攝像頭,130萬像素傳感器)。 他們一般比視頻捕捉更大的(例如:最多爲640x480對於同一網絡攝像頭)。 - 選擇一個解決方案。 - 在請求(調用API函數),從與所選擇的分辨率的選擇的攝像機捕獲的快照。

我已經試過: - JMF:很爛,不支持的連接網絡攝像頭自動檢測。 - FMJ:使用LTI-CIVIL進行攝像頭支持。 - LTI-CIVIL:僅支持VIDEO捕捉。代碼也很舊(2007年,如果我沒記錯的話)。 使用用C++編寫的本地庫進行攝像頭訪問。 DirectX for Windows和Video4Linux for(顯然),Linux。 但看在C++代碼,它變得很明顯,它的面向 視頻流這不是我的目的(反映在我需要說明)

我會很感激,如果任何人都可以點我到Java圖書館,適合我需要的配置文件。

謝謝。

+0

您無法使用本機Windows框架的任何特定原因? –

+0

原生Windows不支持從網絡攝像頭抓取> 640 x 480分辨率。 –

回答

0

以下開源項目,webcamstudiohttp://code.google.com/p/webcamstudio/使用Java進行網絡攝像頭支持做得很好。也許從那裏採取一些想法。

+0

謝謝,但我想我會先嚐試openCV(下面推薦)。 – Michael

+0

@Michael,你能分享一下你的研究嗎?你有沒有找到好的Java庫? – vaibhav

2

OpenCV的是一種流行的C++計算機視覺庫。但是,它們也具有Java綁定。 http://code.google.com/p/javacv/

OpenCV讓您可以訪問圖像和視頻處理以及從多個攝像頭捕獲圖像和視頻。

+0

我想我會嘗試openCV,謝謝。 – Michael

0

您可以使用JMyron,圖書館here,你可以看到它是如何與this示例工作

+1

那麼,這個例子顯示了捕捉視頻流(這我已經可以用lti-civil了)。將嘗試openCV,如果失敗了,我會嘗試jMyron,感謝您的信息。 – Michael

1

這個Java API應該做的工作:http://webcam-capture.sarxos.pl/ 下面的代碼需要的圖片,並將其保存爲.png文件在項目的工作區文件夾中。請務必在他們的網站上查看創作者的其他示例。

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import com.github.sarxos.webcam.Webcam; 

public class TakePictureExample { 

public static void main(String[] args) throws IOException { 

    // get default webcam and open it 
    Webcam webcam = Webcam.getDefault(); 
    webcam.open(); 

    // get image 
    BufferedImage image = webcam.getImage(); 

    // save image to PNG file 
    ImageIO.write(image, "PNG", new File("test.png")); 
} 
}