SVM+HOG:从完全不包含人体的图片中随机剪裁出64*128大小的用于人体检测的负样本
生活随笔
收集整理的這篇文章主要介紹了
SVM+HOG:从完全不包含人体的图片中随机剪裁出64*128大小的用于人体检测的负样本
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
進(jìn)行行人檢測的分類器訓(xùn)練時,負(fù)樣本是從完全不包含人體的圖片中隨機剪裁出來的,下面程序的目的就是這個:1張負(fù)樣本圖片生成10張
準(zhǔn)備工作:創(chuàng)建負(fù)樣本描述文件(全路徑)ifstream fin("F:\\INRIAPerson\\INRIAPerson\\train_64x128_H96\\neg\\negatives.txt");//打開原始負(fù)樣本圖片文件的路徑 sprintf(saveName,"F:\\dataset\\neg\\neg%06d.jpg",++CropImageCount);//生成裁剪出的負(fù)樣本圖片的文件名 #include <iostream> #include <fstream> #include <stdlib.h> //srand()和rand()函數(shù) #include <time.h> //time()函數(shù) #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 CropImageCount = 0; int main() { Mat src; string ImgName; char saveName[256];//裁剪出來的負(fù)樣本圖片文件名 ifstream fin("F:\\INRIAPerson\\INRIAPerson\\train_64x128_H96\\neg\\negatives.txt");//打開原始負(fù)樣本圖片文件的路徑 //注:negatives.txt是負(fù)樣本描述文件,dir /b/s>negatives.txt,用全路徑//一行一行讀取負(fù)樣本描述文件存到ImgName中 while(getline(fin,ImgName)) { cout<<"處理:"<<ImgName<<endl; src = imread(ImgName);//讀取圖片 //圖片大小應(yīng)該能能至少包含一個64*128的窗口 if(src.cols >= 64 && src.rows >= 128) { srand(time(NULL));//設(shè)置隨機數(shù)種子 //從每張圖片中隨機裁剪10個64*128大小的不包含人的負(fù)樣本 for(int i=0; i<10; i++) { int x = ( rand() % (src.cols-64) ); //左上角x坐標(biāo) int y = ( rand() % (src.rows-128) ); //左上角y坐標(biāo) //cout<<x<<","<<y<<endl; Mat imgROI = src(Rect(x,y,64,128)); sprintf(saveName,"F:\\dataset\\neg\\neg%06d.jpg",++CropImageCount);//生成裁剪出的負(fù)樣本圖片的文件名 imwrite(saveName, imgROI);//保存文件 } } } system("pause"); } 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的SVM+HOG:从完全不包含人体的图片中随机剪裁出64*128大小的用于人体检测的负样本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC显示JPG、JIF图片
- 下一篇: SVM+HOG:利用训练好的XML进行行