管理系統(tǒng)和網(wǎng)站哪個(gè)好做網(wǎng)站優(yōu)化排名推廣
OpenCV(Open Source Computer Vision Library)是一個(gè)功能強(qiáng)大的開源計(jì)算機(jī)視覺庫,它提供了豐富的功能,包括讀取和保存視頻。下面分別演示如何使用OpenCV來讀取視頻和保存視頻。
1. 讀取視頻:
在OpenCV中我們要獲取一個(gè)視頻,需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象,指定你要讀取的視頻文件:
-
創(chuàng)建讀取視頻的對(duì)象
cap = cv.VideoCapture(filepath)
參數(shù):
filepath: 視頻文件路徑
要讀取視頻,首先需要打開視頻文件,然后逐幀讀取視頻的每一幀。以下是一個(gè)示例代碼,演示如何使用OpenCV讀取視頻:
//打開視頻文件VideoCapture capture;Mat frame;frame=capture.open(path);//path為視頻文件的路徑//檢查是否成功打開視頻if(!capture.isOpened()){LOGD("無法打開視頻");}//循環(huán)讀取每一幀frameint i=0;while(capture.read(frame)) {//在這里可以對(duì)每一幀frame進(jìn)行處理imwrite("/sdcard/DCIM/frame"+to_string(i)+".png",frame);//保存視頻每一幀到相冊i++;}
2. 保存視頻:
在OpenCV中保存視頻使用的是VedioWriter對(duì)象,在其中指定輸出文件的名稱,如下所示:
1.創(chuàng)建視頻寫入的對(duì)象
out = cv2.VideoWriter(filename,fourcc, fps, frameSize)
參數(shù):
- filename:視頻保存的位置
- fourcc:指定視頻編解碼器的4字節(jié)代碼
- fps:幀率
- frameSize:幀大小
要保存視頻,首先需要?jiǎng)?chuàng)建一個(gè)視頻寫入對(duì)象,然后逐幀將圖像寫入該對(duì)象。以下是一個(gè)示例代碼,演示如何使用OpenCV保存視頻:
//打開視頻文件 VideoCapture capture;Mat frame;frame=capture.open(path);if(!capture.isOpened()){LOGD("無法打開視頻");}//獲取視頻基本信息int frame_width = static_cast<int>(capture.get(cv::CAP_PROP_FRAME_WIDTH));int frame_height = static_cast<int>(capture.get(cv::CAP_PROP_FRAME_HEIGHT));//定義視頻編碼器及其參數(shù)double fps = capture.get(cv::CAP_PROP_FPS);int codec=VideoWriter::fourcc('M','J','P','G');//設(shè)置新的視頻的路徑和參數(shù)VideoWriter output;
output.open("/sdcard/DCIM/framevideo4804.avi",CAP_OPENCV_MJPEG,codec,fps,cv::Size(frame_width, frame_height),true);//判斷是否創(chuàng)建出新的視頻文件 if (!output.isOpened()){LOGD("無法創(chuàng)建輸出視頻文件!");return ;}int i=0;while(capture.read(frame)) {//在這里可以對(duì)視頻的每一幀frame進(jìn)行處理// 將處理后的幀寫入輸出到新的視頻文件中output.write(frame);}