OpenCV4Android の HOGDescriptor.setSVMDetector 機能に問題があります。
Android では、HOGDescriptor.setSVMDetector()
メソッドに渡された Mat() が必要です。これは、関数が として宣言されている C++ 仕様とは異なることに注意してくださいsetSVMDetector(const vector<float>& detector)
。問題は、線形 SVM モデルを入力する方法です。つまり、HOGDescriptor オブジェクトが setSVMDetector メソッドへの入力として受け入れるように、浮動小数点値の配列を OpenCV4Android Mat に変換する方法です。
の出力を分析してみましたHOGDescriptor.getDefaultPeopleDetector()
。これにより、3781 行、1 列、タイプ CV_32F の Mat が得られます。これを再作成する場合、さらにはバリエーション (例: 転置、単一の配列エントリを持つ 1x1 Mat など) を試す場合、出力は次のようになります。
error: checkDetectorSize() in function virtual void cv::HOGDescriptor::setSVMDetector(cv::InputArray)
Android でこの方法で SVM 検出器を設定する方法についてのアドバイスをいただければ幸いです。