1. 程式人生 > >opencv處理視訊分幀合幀

opencv處理視訊分幀合幀

本專案採用opencv將視訊分幀為圖片,將圖片輸入到已訓練好的模型,得到標註出車輛和行人的圖片,再經opencv合幀為視訊輸出。在學習.cpp對視訊的分幀合幀的過程中留下此說明文件。

examples/ssd/下有一ssd_detect_t3_voc0712.cpp檔案,是對專案自帶ssd_detect.cpp的改寫,編譯連線後生成.bin檔案可以加以呼叫,是一個利用C++呼叫Caffe的主體步驟。

OpenCV為視訊的讀入提供了一個類VideoCapture

1,開啟一段視訊,我們的專案用了方法一(311行)

VideoCapture cap("../video.avi"); // 方法一
cap.open("../video.avi"); // 方法二


2,獲取視訊幀可以有多種方法,此專案選用了方法一(318行)

// 方法一capture.read(frame);// 方法二capture.grab();capture.retrieve(frame);// 方法三capture>>frame;

3,從第一幀開始一幀一幀的按順序獲取將每幀圖片作為引數傳進網路,經過模型識別輸出標註出紅框的圖片


呼叫caffe網路並將圖片傳入的過程參考:https://blog.csdn.net/xczexcel/article/details/65931636

OpenCV視訊剪下參考 :https://blog.csdn.net/NNNNNNNNNNNNY/article/details/50519181

二、使用opencv提取視訊每一幀及將連續圖片合成視訊

VideoWriter 返回可自定義視訊名稱,幀率,尺寸的視訊

呼叫write()直到遍歷到最後一幀圖片結束,此時輸出新生成的帶紅框標註的視訊將在資料夾中輸出。