OpenCV(開源電腦視覺庫)是一個開源電腦視覺和機器學習軟體庫。它包含超過2500種最佳化演算法,廣泛應用於即時應用。
Java 透過 JavaCV 函式庫提供與 OpenCV 的綁定,讓 Java 開發人員在其應用程式中利用 OpenCV 的功能。此類應用程式之一是從網路攝影機擷取影像。
要繼續操作,您需要具備以下條件 -
您的系統上已安裝 OpenCV。
JavaCV,Java 中 OpenCV 的包裝器。
要擷取快照,我們需要建立 VideoCapture 類別的實例,它代表視訊擷取裝置。然後我們可以使用 read 方法從視訊來源擷取幀。
讓我們來看一個例子 -
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.videoio.VideoCapture; import org.opencv.imgcodecs.Imgcodecs; public class Main { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { // Create a VideoCapture object VideoCapture camera = new VideoCapture(0); // Check if camera opened successfully if(!camera.isOpened()){ System.out.println("Error: Camera not accessible"); return; } // Capture a new frame Mat frame = new Mat(); camera.read(frame); // Save the frame as an image Imgcodecs.imwrite("snapshot.png", frame); // Release the camera camera.release(); } }
在上面的程式碼中,我們先載入OpenCV函式庫。
然後我們為預設攝影機(索引 0)建立一個 VideoCapture 物件。如果您有多個攝影機並希望使用不同的鏡頭,則可以在建立 VideoCapture 物件時指定其索引。
我們使用 isOpened 方法檢查相機是否成功開啟。如果相機無法訪問,我們會列印錯誤訊息並從 main 方法返回。
接下來,我們使用 read 方法從相機捕捉一幀並將其儲存在 Mat 物件中。 Mat(Matrix的縮寫)是OpenCV中的主要影像結構,用於儲存像素資料。
我們使用 Imgcodecs 類別中的 imwrite 方法將捕獲的幀保存為圖像,並將其命名為「snapshot.png」。
最後,我們使用release方法釋放相機,以釋放資源。
當您執行此程式時,它將從網路攝影機擷取單個畫面並將其儲存為專案目錄中的「snapshot.png」。
使用 OpenCV 從 Java 中的網路攝影機擷取影像是一個簡單的過程,它為更複雜的應用程式(例如人臉辨識、運動偵測等)提供了大量機會。了解如何使用 Java 中的 OpenCV 函式庫為深入研究電腦視覺和影像處理奠定了堅實的基礎。
以上是在Java中使用OpenCV從系統相機拍攝快照的詳細內容。更多資訊請關注PHP中文網其他相關文章!