學習javacv之四:輸入視頻,簡單處理後輸出

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);
		}
		
				
		
	}
}

視頻截圖:

處理前:



處理後:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章