1. 程式人生 > >學習javacv之四:輸入視訊,簡單處理後輸出

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

視訊截圖:

處理前:



處理後:



相關推薦

學習javacv:輸入視訊簡單處理輸出

package com.csdn.linghu.javacvlean03; import org.bytedeco.javacpp.opencv_core.CvSize; import org.bytedeco.javacpp.opencv_core.IplImage;

一段可迴圈輸入數字經過計算輸出的dos批處理程式碼留存參考

技術群裡有新人問這個題目,無聊寫了這個dos批處理。 因為十幾年沒寫dos了,都忘記了,寫這幾行程式碼花了半個小時,所以打算記錄下來,留存備用 @echo off :start set /p mem

【opencv學習十二】簡單運動檢測

視訊運動檢測基本思想是進行每一幀對比,檢測不同然後得出是否運動,一般分為兩種,背景法和差幀法;背景法是:將一幅圖作為背景,讓後和每一幀對比;缺點是一開始存入的背景可能隨光照變法而造成錯誤,但是可以用在光照環境穩定的地方,優點是可以檢測之前背景沒有的景象;差幀法是:將前一幀和後

node學習第一個介面簡單的登入驗證

寫了第一node小程式。驗證登入。 對於一個新手來說思路是查出使用者表生成users集合。然後建立server接受post過來的user進行比對判斷是否登入成功。 程式碼如下: //請求所需模組 var http = require("http"); var mysql =

css學習體會——塊級元素行內元素長寬設置

寬高 lec 實戰 display 所有 splay 但是 isp 內聯元素 在做一些實戰的布局時,總會發現一些元素設置寬高有用,一些元素沒有用。下面來總結一下: (1)塊級元素:所有的會級元素設置寬高都有效 (2)內聯元素:一般的內聯元素設置寬高沒有用,但是一些特殊的,如

機器學習入門:機器學習的方法-神經網絡(轉載)

轉載 bsp 圖像 src nbsp 加速 數值 str 我們   轉自 飛鳥各投林   神經網絡      神經網絡(也稱之為人工神經網絡,ANN)算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神

ceph學習筆記PG

sds ceph cloud 對象 pg PG PG(Placement Group)單從名字上可理解為一個放置策略組,它是對象的集合,集合裏的所有對象具有相同的放置策略;對象的副本都分布在相同的OSD列表上。一個對象只能屬於一個PG,一個PG對應於放置在其上的OSD列表。一個OSD上可

Android異步載入學習筆記:利用緩存優化網絡載入圖片及ListView載入優化

角度 thread 下午 出發 easy code cat height back 假設不做不論什麽處理。直接用網絡載入圖片在網速快的情況下可能沒什麽不好的感覺。可是假設使用移動流量或是網絡不好的時候。問題就來了,要麽用戶會抱怨流量使用太多。要麽抱怨圖

[LeetCode] Two Sum IV - Input is a BST 兩數之和 - 輸入是二叉搜索樹

count imp itl .com 否則 href 當前 recursive 兩數之和 Given a Binary Search Tree and a target number, return true if there exist two elements i

MongoDB 學習筆記 刪除數據集合數據庫

dia str .cn mongo 刪除數據 ron style god 學習 刪除數據,集合,數據庫: 刪除一個文檔: db.media.deleteOne({"name": "Sky"}) 刪除多個文檔: db.media.deleteMany({"name"

學習筆記非空驗證相等範圍正則驗證

put ret 用戶 auto turn 單引號 格式不正確 div 表達 1.非空驗證 2.相等驗證 3.範圍驗證 4.正則驗證:/^ 內容$/ 定界符 // 開始 ^ 結尾 $ \轉義:\

Java學習筆記2(輸入與隨機數簡單介紹)

args image public 數據類型 system double next class gpo 輸入: import java.util.Scanner; public class ScannerDemo{   public static void main(Str

Linux學習筆記————Linux常用命令 ( 待補充)

-h http “.” 現實 人性化 快捷 我們 包括 無法 一、Linux命令——文件、磁盤管理 1.文件管理 <1>查看文件信息:ls ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。 Linu

Linux 學習筆記 查看文件

lin 學習 文件內容 筆記 文件 內容 上下 post blog 一 cat cat filename 查看文件內容 cat -n filename 查看文件內容,帶上行號 cat -b filename 查看文件內容 ,空行不帶行號 二 more more file

項目管理學習筆記.風險管理

src analysis 方式 出現 ati 表示 statistic 1.2 esp 項目管理個人能力--風險管理 下圖是一個風險管理的示意表格

這是一套Java菜鳥到大牛的學習路線高級教程由工作了10年的資深Java架構師整理。

script gin 視頻 提速 entos 分布式存 內幕 服務 www 這是一套Java菜鳥到大牛的學習路線之高級教程,由工作了10年的資深Java架構師整理。 01-java高級架構師設計-基礎深入 J

系統學習redis——redis數據類型hash類型及操作

。。 del code 操作 redis數據類型 src hms 添加 數據類型 hashes數據類型 Redis的hash是一個string類型的field(字段)和value的映射表。它的添加、刪除操作都是0/1(平均操作法)。hash特別適合用於存儲對象。相較於將對象

python學習筆記-多進程&多線程&異步非阻塞

running executor 服務器 RoCE 進行 break python buffer 創建 ProcessPoolExecutor對multiprocessing進行了高級抽象,暴露出簡單的統一接口。 異步非阻塞 爬蟲 對於異步IO請求的本質則是【非阻塞So

Memcached學習筆記:Memcache應用場景介紹

對於高併發高訪問的Web應用程式來說,資料庫存取瓶頸一直是個令人頭疼的問題。特別當你的程式架構還是建立在單資料庫模式,而一個數據池連線數峰 值已經達到500的時候,那你的程式執行離崩潰的邊緣也不遠了。很多小網站的開發人員一開始都將注意力放在了產品需求設計上,缺忽視了程式整體效能,可擴 展性等方面的考