Qt讀取分類器訓練後xml檔案(以SVM為例)

2021-10-04 15:21:17 字數 1172 閱讀 2505

之前在用qt寫mac桌面應用程式的時候,當時做的是行人檢測,由於每次檢測要讀取訓練出來的xml檔案,因此需要把xml儲存起來,然後每次執行程式後儲存起來。

首先想到的第乙個解決方法是把xml檔案放在resources中,然後通過

qfile file

(":/detectionfile/source/svm_hog.xml");

string tempname = file.

tostdstring()

;ptr svm = svm::

create()

;// 建立分類器

svm = svm::

load

(tempname)

;

來讀取,後面實現發現這種方法不行,在編譯器上可以執行,但是單獨開啟編譯好的軟體一讀取xml檔案就會崩潰。

後面嘗試了第二種方法,

qstring temp = qdir::

currentpath()

;string tempname = temp.

tostdstring()

;tempname +

="/svm_hog.xml"

;ptr svm = svm::

create()

;// 建立分類器

svm = svm::

load

(tempname)

;

ptr svm = svm::

create()

;// 建立分類器()

;string tempname = temp.

tostdstring()

+"/svm_hog.xml"

;ptr svm = svm::

create()

;// 建立分類器

svm = svm::

load

(tempname)

;

為什麼能解決呢?

因為如果使用qstring qdir::currentpath(),那麼這個靜態方法將返回應用程式當前目錄的絕對路徑。 當前目錄是使用qdir :: setcurrent()設定的最後乙個目錄,或者,如果從未呼叫過,則是父程序在其上啟動該應用程式的目錄。

示例:

OpenCV訓練分類器

opencv訓練分類器 一 簡介 目標檢測方法最初由paul viola viola01 提出,並由rainer lienhart lienhart02 對這一方法進行了改善。該方法的基本步驟為 首先,利用樣本 大約幾百幅樣本 的 harr 特徵進行分類器訓練,得到乙個級聯的boosted分類器。分...

訓練Opencv分類器

由於在做乙個專案的需要,接觸到opencv。並使用其中的機器識別,自己會的實在不多。在使用它自帶的人臉分類器時,用自己的arm板上的攝像頭拍的,基本上識別不出。於是自己想訓練乙個分類器 用自己arm板上的攝像頭拍 給自己在專案中使用。於是找了個教室,拍了三百張 回去做分類器。開始以為做分類器會很麻煩...

OpenCV訓練分類器

一 簡介 目標檢測方法最初由paul viola viola01 提出,並由rainer lienhart lienhart02 對這一方法進行了改善。該方法的基本步驟為 首先,利用樣本 大約幾百幅樣本 的 harr 特徵進行分類器訓練,得到乙個級聯的boosted分類器。分類器中的 級聯 是指最終...