package com.csdn.linghu.javacvlean03;
import org.bytedeco.javacpp.opencv_core.CvSize;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacpp.opencv_highgui.CvCapture;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;
public class ReadWriteVideo {
public static void main(String[] args) {
//新建文件捕獲器
CvCapture cvCapture = cvCreateFileCapture("resources/beautiful.avi");
if (cvCapture !=null) {
//獲取視頻的幀率
double fps = cvGetCaptureProperty(cvCapture, CV_CAP_PROP_FPS);
//設置矩陣框的尺寸
CvSize cvSize = cvSize(
(int)cvGetCaptureProperty(cvCapture, CV_CAP_PROP_FRAME_HEIGHT),
(int)cvGetCaptureProperty(cvCapture, CV_CAP_PROP_FRAME_WIDTH)
);
//初始化視頻輸出
CvVideoWriter cvVideoWriter = cvCreateVideoWriter(
//輸出視頻文件名,文件路徑
"resources/beautifulOut.avi",
//編碼格式:
CV_FOURCC((byte)'M', (byte)'J', (byte)'P', (byte)'G'),
//幀率
fps,
//幀尺寸
cvSize);
//創建視頻輸出幀的圖像大小、位深度、通道數
IplImage polarImage = cvCreateImage(cvSize, IPL_DEPTH_8U, 3);
IplImage bgrImage ;
while((bgrImage = cvQueryFrame(cvCapture)) !=null){
//對每幀圖像進行處理
cvLogPolar(
//原始圖像
bgrImage,
//輸出圖像
polarImage,
//以圖像中心爲原點進行變換
cvPoint2D32f(bgrImage.width()/2, bgrImage.height()/2),
//縮放比例100
100,
//
CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS|CV_WARP_INVERSE_MAP);
//將每一幀圖像保存到視頻流中
cvWriteFrame(cvVideoWriter, polarImage);
}
//釋放資源
cvReleaseVideoWriter(cvVideoWriter);
cvReleaseImage(polarImage);
cvReleaseCapture(cvCapture);
}
}
}
視頻截圖:
處理前:
處理後: