首頁  >  文章  >  Java  >  在Java中使用OpenCV從系統相機拍攝快照

在Java中使用OpenCV從系統相機拍攝快照

王林
王林轉載
2023-08-28 11:09:10737瀏覽

在Java中使用OpenCV從系統相機拍攝快照

簡介

OpenCV(開源電腦視覺庫)是一個開源電腦視覺和機器學習軟體庫。它包含超過2500種最佳化演算法,廣泛應用於即時應用。

Java 透過 JavaCV 函式庫提供與 OpenCV 的綁定,讓 Java 開發人員在其應用程式中利用 OpenCV 的功能。此類應用程式之一是從網路攝影機擷取影像。

先決條件

要繼續操作,您需要具備以下條件 -

  • 您的系統上已安裝 OpenCV。

  • JavaCV,Java 中 OpenCV 的包裝器。

使用 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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除