Java 使用 OpenCV (二)之 视频编解码器

学习了OpenCV,当然少不了会用来处理视频,这就需要用到视频编解码器。

配置环境

编解码器在解压的OpenCV 目录下就有。在opencv\build\bin
Java 使用 OpenCV (二)之 视频编解码器_第1张图片

同样的,将这个文件放到 C:\Windows\System32 目录下。
Java 使用 OpenCV (二)之 视频编解码器_第2张图片

测试代码

这里需要一个视频文件,如果你电脑正好没有,没关系,OpenCV 为你准备好了。

视频文件

打开解压的 OpenCV 目录。找到opencv\sources\samples\data。这里放的是官方示例的图片视频资源。滚动条往下拉,到最底部,能找到一个vtest.avi,好,就它了。
Java 使用 OpenCV (二)之 视频编解码器_第3张图片
将这个视频文件复制到D:\test 下方便使用。
Java 使用 OpenCV (二)之 视频编解码器_第4张图片

代码

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);// 程序停止
	}
}

运行效果
Java 使用 OpenCV (二)之 视频编解码器_第5张图片

你可能感兴趣的:(OpenCV,Opencv,for,Java)