1. 程式人生 > >Java 使用 OpenCV (二)之 視訊編解碼器

Java 使用 OpenCV (二)之 視訊編解碼器

學習了OpenCV,當然少不了會用來處理視訊,這就需要用到視訊編解碼器。

配置環境

編解碼器在解壓的OpenCV 目錄下就有。在opencv\build\bin 下 ​在這裡插入圖片描述

同樣的,將這個檔案放到 C:\Windows\System32 目錄下。 在這裡插入圖片描述

測試程式碼

這裡需要一個視訊檔案,如果你電腦正好沒有,沒關係,OpenCV 為你準備好了。

視訊檔案

開啟解壓的 OpenCV 目錄。找到opencv\sources\samples\data。這裡放的是官方示例的圖片視訊資源。滾動條往下拉,到最底部,能找到一個vtest.avi,好,就它了。 在這裡插入圖片描述 將這個視訊檔案複製到D:\test 下方便使用。 在這裡插入圖片描述

程式碼

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.videoio.VideoCapture;

public class Test {	
	public static void main(String[] args) {
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
		VideoCapture capture = new VideoCapture();
		capture.
open("D:\\test\\vtest.avi");//開啟視訊檔案 if(!capture.isOpened()) { // 判斷視訊檔案是否存在 System.out.println("視訊檔案路徑錯誤!"); return; } HighGui.namedWindow("show");// 建立一個視窗,用來播放視訊,視窗通過名字來區分,所以必須要命名。 Mat image = new Mat();//定義一個Mat,用來接收一幀的影象 while(capture.read(image)) {// capture.read(image) 接收視訊一幀的影象,將它存放在 image 中。如果視訊中沒有影象,即視訊讀取完畢,則返回 false
HighGui.imshow("show", image);// 第一個引數:要在哪個視窗顯示 第二個引數:要顯示的 Mat HighGui.waitKey(30); //每一幀之間的播放間隔 } System.out.println("播放完畢"); HighGui.destroyAllWindows();//銷燬所有建立的視窗 System.exit(0);// 程式停止 } }

執行效果 在這裡插入圖片描述