JJava OpenCV 图像处理31 视频分析和对象跟踪 视频写入
Java OpenCV-4.0.0 图像处理 视频分析和对象跟踪 视频写入
VideoWriter.fourcc(char c1, char c2, char c3, char c4) 只能输入4个字符串
VideoWriter 对象会将图像一帧一帧写入到对应的文件中。
VideoWriter writer = new VideoWriter("D:/a.mp4",VideoWriter.fourcc('D', 'I', 'V', 'X'), 15.0,size, true);
VideoWriter 对象构造函数
参数 | 名称 | 解释 |
---|---|---|
参数 1 | String filename | 文件路径及文件名(列如:“D:/a.mp4”) |
参数 2 | int fourcc | 指定 FourCC |
参数 3 | double fps | 传递帧率的数量 |
参数 4 | Size frameSize | 传递帧率的大小 |
参数 4 | boolean isColor | 最后一个是颜色标志。如果为 True,编码器期望颜色帧,否则它与灰度帧一起工作。 |
FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定视频编解码器的4字节代码。可用代码列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。它取决于平台。遵循编解码器对我来说效果很好。
在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2 等等 具体请参考 fourcc.org(最好使用XVID。MJPG会生成大尺寸的视频。X264会生成非常小的尺寸的视频)
package com.xu.object;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.VideoWriter;
import org.opencv.videoio.Videoio;
/**
*
* @Title: OpenCV01.java
* @Package com.xu.opencv
* @Description: TODO
* @author: xuhyacinth
* @date: 2019年3月14日 下午12:10:14
* @version: V-1.0
* @Copyright: 2019 xuhyacinth
*
*/
public class Video {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
writeVideo();
}
/**
* OpenCV-4.0.0 将摄像头写入本地
* @return: void
* @date: 2019年3月14日12:08:19
*/
public static void writeVideo() {
//1 如果要从摄像头获取视频 则要在 VideoCapture 的构造方法写 0
VideoCapture capture = new VideoCapture(0);
Mat video = new Mat();
int index = 0;
Size size = new Size(capture.get(Videoio.CAP_PROP_FRAME_WIDTH),capture.get(Videoio.CAP_PROP_FRAME_HEIGHT));
VideoWriter writer = new VideoWriter("D:/a.mp4",VideoWriter.fourcc('D', 'I', 'V', 'X'), 15.0,size, true);
while(capture.isOpened()) {
capture.read(video);//2 将摄像头的视频写入 Mat video 中
writer.write(video);
HighGui.imshow("像头获取视频", video);//3 显示图像
index = HighGui.waitKey(100);//4 获取键盘输入
if(index == 27) {//5 如果是 Esc 则退出
capture.release();
writer.release();
return;
}
}
}
}