OpenCV エラー: 引数が正しくありません (新しい陽性サンプルを取得できません。最も考えられる理由は引数が不十分であることです)

训练报错:
OpenCV エラー: 引数が正しくありません (新しい陽性サンプルを取得できません。最も考えられる理由は、指定された vec ファイル内のサンプル数が不十分であることです。) in get、file /home/opencv-.1.0/apps/traincascade/imagestorage.cpp、行 157 terminate は、「cv::Exception」のインスタンスをスローした後に呼び出されます what(): /home/opencv-3.1.0/apps/traincas cade/imagestorage.cpp:157: エラー: (-5) 新しい陽性サンプルを取得できません。最も考えられる原因は、指定された vec ファイル内のサンプル数が不十分であることです。
 関数で取得

放棄 (コアダンプ)
 

情報を検索したところ、基本的には NumPos 設定が大きすぎると言われました (ただし、numPos を数回調整しようとしましたが、それでもエラーが報告されました)。トレーニング コマンド ステートメントのパラメーターは次のとおりです。

 opencv_traincascade -data classifier -vec tables.vec -bg negatives.txt\
   -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\
   -numNeg 600 -w 80 -h 40 -mode ALL -precalcValBufSize 1024\
   -pre calcIdxBufSize 102 4
この段落は、github プロジェクトのソース コード ステップを直接コピーして貼り付けたものです。データに従って、numPos 1000 を 500 に、numNeg 600 を 300 に変更しましたが、それでもエラーが報告されました。

解決策:
後で、「-w 80 -h 40」がそれぞれポジティブ サンプルの幅と高さを表すことがわかりましたが、よく考えて、ポジティブ サンプル画像はすべて 20×20 であるため、次のようにコマンド パラメーターを「-w 20 -h 20」に設定しようとしました。

perl bin/createsamples.plpositives.txt negatives.txt サンプル 1500\
   "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1\
   -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 20 -h 20"
opencv_traincascade -data classifier -vec tables.vec -bg negatives.txt \
   -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 500\
   -numNeg 300 -w 20 -h 20 -mode ALL -precalcValBufSize 1024\
   -precalcIdxBufSize 1024
成功跑通

最新追記:ポジサンプル画像の幅と高さの比率は、上記のwとhの比率と同じである必要があり、必ずしも等しい必要はないという情報を見ました。
 

https://blog.csdn.net/weixin_39388032/article/details/118175930

opencv_traincascade.exe を実行して
最初の層をトレーニングした後、エラーが発生します。

OpenCV: 終了ハンドラーが呼び出されます! 最後の OpenCV エラーは次のとおりです:
OpenCV(3.4.6) エラー: 引数が正しくありません (> 新しい陽性サンプルを取得できません。 
最も考えられる理由は、指定された vec ファイル内のサンプル数が不十分であることです。
1
2
3
この問題は、主に numPos の値が正しく設定されていないことが原因です。彼らは numPos を
陽性サンプルとして解釈しているだけであり、私は常にそう考えてきたため、numPos の値は ve を作成した num 番号とまったく同じになります。 c サンプル。

これは間違いです。numPos の値を制限する公式があります。

vec ファイル番号 >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S 1
vec
ファイル番号: vec ファイルを作成するためのポジティブ サンプルの num S: vec ファイルを生成する
ときのネガティブ サンプルの総数を示します。
(S は、背景としてすぐに認識できる vec ファイルからのサンプルの数です)

実際の測定後、いくつかの断言があります:
1. 確かに numPos の問題です;
2. numPos は、設定された num 番号と生成された vec ファイルよりも小さいはずです; 修正する場合は、上記を参照して NumPos の値を減らすことができます 3. 最初のトレーニング層を観察します。最初のトレーニング層の終了後、エラーが報告された後は問題ありません ; ————————————————— https://blog.csdn.net/サザス/記事/
詳細
/
 100275777

추천

출처blog.csdn.net/qq_42672770/article/details/131924332