簡體   English   中英

確定OpenCV C ++中StatModel的類型

[英]Determine type of StatModel in opencv c++

我目前正在實施一個通用分類程序,用戶在該程序中輸入帶標簽的數據集和來自opencv的機器學習技術,並且程序將訓練該分類器。 由於對於某些分類器(在我的示例中為Neural Nets),輸入數據結構需要不同(不是整數作為類標簽,而是每個類由索引-1/1組成的數組),因此我應用了整數類的轉換器標簽為數組類標簽。 由於我只需要對分類器ANN_MLP而不是其他可能的分類器執行此操作,因此我正在尋找一種方法來檢查輸入分類器是哪種StatModel(opencv中所有分類器的超類)。

所以我正在尋找這樣的事情:

void validate(cv::ml::StatModel* classifier){
    if(classifier.ofType(cv::ml::ANN_MLP))
        do something
    else
        do something else
}

有誰知道opencv中是否有功能可以檢查子類/超類的類型?

我試圖檢查

if(typeid(cv::ml::ANN_MLP).hash_code() == typeid(classifier).hash_code())

if(typeid(cv::ml::ANN_MLP)==typeid(classifier))

C ++等於instanceof ,但是它總是返回false,可能是因為如果在此函數中使用分類器,則將其轉換為StatModel? 但是子類的基礎結構不應該保存在某個地方嗎? 抱歉,如果這是一個愚蠢的問題,但是對於這種“廣播” /實例問題我還是陌生的。任何幫助都非常感謝! 謝謝:)

安德里亞

您忘記了傳遞的參數是指針類型: StatModel* 因此,您需要將其與cv::ml::ANN_MLP指針類型進行比較,或者從傳入的類型中刪除它。

另外, dynamic_cast ,盡管速度較慢,它也適用於ANN_MLP子類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM