使用opencv的adaboost訓練自己的分類器

2021-08-15 04:43:11 字數 2445 閱讀 5260

1 首先準備好正樣本:(這裡我們訓練的頭部分類器)

2 將正樣本統一到固定尺寸

這裡我使用python實現,python讀取資料夾還沒有用過,直接先手動操作:

開啟命令列,進入正樣本資料夾中,輸入:

dir /b >pos.txt
這樣就在正樣本資料夾中生成了pos.txt,記錄了所有的檔名:

直接在ue中開啟,切換到16進製制模式,選擇替換,將0d 0a替換為2c 0d 0a

儲存後修改檔名為:pos.csv

這樣就得到了個csv檔案,儲存了所有檔案的名稱(感覺有點蠢,第一次先這樣吧)。

開始寫**,**很簡單,就是讀取csv檔案,開啟影象,灰度化,統一尺寸到32*32,儲存檔案

#coding=utf-8

import pandas as pd

import numpy

from numpy import nan

import cv2

test = pd.read_csv('pos.csv',index_col=false,header=none)#讀取csv檔案

test.columns = ['dir']#修改列名稱

print(test.head(5))#看看資料情況

num = test.shape[0]#取出個數

print(num)

for i in range(0,num):

#讀取檔案

print(i)

#print(test.dir[i])

image = cv2.imread(test.dir[i])

if image is

none:

test.dir[i] = nan#設定為空

continue

image = cv2.resize(image,(30,30))

image = cv2.cvtcolor(image,cv2.color_rgb2gray)

cv2.imwrite(test.dir[i],image)

test.dropna(axis=0,how='any')#去除調na行

test=test.dropna()

print(test.shape[0])

test.to_csv('pos.csv',index=false,header=false)

print("ok end")

3 生成正樣本描述檔案

還記得剛才的pos.txt吧,直接開啟,將jpg都替換為jpg 1 0 0 30 30

記得檢查一下,必須全部都是jpg檔案,別弄錯了。

4 生成負樣本描述檔案

命令列進入負樣本目錄,直接輸入:

dir /b > neg

.txt

opencv_createsamples.exe -vec pos.vec -info pos\pos.txt -bg neg\neg

.txt -w 30 -h 30 -num 3000

這就生成了pos.vec檔案

6 開始訓練:

opencv_traincascade.exe -data data -vec pos.vec -bg neg/neg.txt -numpos 3000 -numneg 5000 -numstages 4 -featuretype haar -w 30 -h 30 -mode all

結果發生錯誤:

經過了長時間的撲騰,最終發現,是負樣本的neg.txt必須包含相對路徑,使用ue開啟,直接列模式編輯新增,終於可以了。

(後面測試opencv2.4.9版本貌似沒有這個路徑的問題)

(順便吐槽下,harr特徵的訓練實在太慢了,建議測試時候先使用hog或者lbp特徵確定步驟是否正確)

opencv的使用例子

include include using namespace std int main 影象相似度orb演算法 define crt secure no deprecate include include include include include include include includ...

opencv庫的使用

coding utf 8 import cv2 as cv import numpy as np from matplotlib.font manager import fontproperties font set fontproperties fname r c windows fonts si...

openCV使用隨記

cv2.videocapture cv2.calcopticalflowfarneback cv2.calcopticalflowfarneback prev,next,flow,pyr scale,levels,winsize,iterations,poly n,poly sigma,flags ...