OpenCV讀入圖片序列進行HOG行人檢測並儲存為視訊
此程式是用OpenCV的預設SVM引數進行檢測,若圖片過大過多,處理起來會比較慢。
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/ml/ml.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat src;
string ImgName;//圖片檔名
//ifstream fin("Seq4List.txt");//開啟圖片序列的檔案列表
ifstream fin("subset.txt");
namedWindow("ImageSeq",0);
VideoWriter videoWriter;//視訊寫入器
videoWriter.open("Seq6.avi", CV_FOURCC('x','v','I','D'),25,Size(1292,964));//注意若圖片尺寸與寫入器的尺寸不同的話可能失敗
if(!videoWriter.isOpened()) cout<< "建立VideoWriter失敗"<<endl;
HOGDescriptor people_detect_hog; //HOG特徵檢測器
//採用預設的已經訓練好了的SVM係數作為檢測的模型
people_detect_hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
while(getline(fin,ImgName))
{
cout<<"處理:"<<ImgName<<endl;
string fullName = "D:\\TrackingTool-Matlab\\seq4\\" + ImgName;//加上路徑名,"\\"表示轉義字元"\"
src = imread(fullName);
vector<Rect> found, found_filtered; //矩形框陣列
//對輸入的圖片進行多尺度行人檢測,檢測視窗移動步長為(8,8)
people_detect_hog.detectMultiScale(src, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);
//找出所有沒有巢狀的矩形框r,並放入found_filtered中,如果有巢狀的話,則取外面最大的那個矩形框放入found_filtered中
for(int i=0; i < found.size(); i++)
{
Rect r = found[i];
int j=0;
for(; j < found.size(); j++)
if(j != i && (r & found[j]) == r)
break;
if( j == found.size())
found_filtered.push_back(r);
}
//畫矩形框,因為hog檢測出的矩形框比實際人體框要稍微大些,所以這裡需要做一些調整
for(int i=0; i<found_filtered.size(); i++)
{
Rect r = found_filtered[i];
r.x += cvRound(r.width*0.1);
r.width = cvRound(r.width*0.8);
r.y += cvRound(r.height*0.07);
r.height = cvRound(r.height*0.8);
rectangle(src, r.tl(), r.br(), Scalar(0,255,0), 3);
}
videoWriter << src;//寫入一幀到檔案
imshow("ImageSeq",src);
waitKey(50);//注意:imshow之後必須有waitKey(),否則無法顯示影象
}
videoWriter.release();
//system("pause");
return 0;
}
原始碼下載,環境為VS2010 + OpenCV2.4.4
相關文章
- OpenCV2.4.4實現HOG行人檢測OpenCVHOG
- 利用HOG特徵進行人體檢測HOG特徵
- 自己訓練SVM分類器進行HOG行人檢測HOG
- 對html進行截圖並儲存為本地圖片HTML地圖
- 短視訊原始碼,視訊轉為圖片儲存原始碼
- 利用Hog特徵和SVM分類器進行行人檢測HOG特徵
- Android——儲存圖片到外部儲存並進行原生分享Android
- C# 截圖並儲存為圖片C#
- 在Python中使用OpenCV進行人臉檢測PythonOpenCV
- Android:MediaCodeC硬編碼解碼視訊,並將視訊幀儲存為圖片檔案Android
- opencv視訊人臉檢測OpenCV
- Excel 讀取圖片並獲取儲存路徑Excel
- HOG_SVM_行人檢測資料集合_INRIA資料集HOG
- 直播平臺原始碼,視訊抽幀作為圖片儲存原始碼
- win10系統如何擷取視訊片段儲存為圖片Win10
- 圖片人臉檢測——OpenCV版(二)OpenCV
- Android將view儲存為圖片並放在相簿中AndroidView
- 視訊人臉檢測——OpenCV版(三)OpenCV
- 儲存過程 檢視 觸發器 序列儲存過程觸發器
- MATLAB將figure視窗儲存為圖片Matlab
- 短視訊帶貨原始碼,儲存圖片到相簿/相簿原始碼
- 3、Opencv播放視訊、儲存、暫停視訊,開啟攝像頭OpenCV
- SQL Server中對圖片進行儲存和輸出SQLServer
- 物體檢測實戰:使用 OpenCV 進行 YOLO 物件檢測OpenCVYOLO物件
- js實現canvas儲存圖片為png格式並下載到本地JSCanvas
- iOS儲存網路圖片和讀取本地沙盒圖片iOS
- 【opencv五】利用opencv給讀入的視訊新增拖動滑塊OpenCV
- Activiti 儲存圖片
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- OpenCV-python多程式實現兩個海康威視攝像頭同時錄入視訊(親測穩定分流無中斷)並儲存本地OpenCVPython
- 【轉】mysql儲存圖片技術決定:儲存二進位制檔案還是隻儲存圖片相對路徑,圖片放在硬碟上面?MySql硬碟
- Python讀取、儲存、檢視.mat檔案Python
- c# winform下sql圖片二進位制儲存/讀取/顯示/寫入XML/讀取XML顯示C#ORMSQLXML
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- Python-OpenCV 處理視訊(四): 運動檢測PythonOpenCV
- iOS開發-新建相簿並儲存圖片到該相簿iOS
- php獲取遠端網站圖片並儲存本地PHP網站
- 檢視正在執行的儲存過程儲存過程