エラー解決: OpenCV の顔検出での「エラー: (-215) !empty() in function detectMultiScale」
OpenCV では、 cv2.CascadeClassifier.detectMultiScale() メソッドを使用して顔検出を実行しようとすると、「error: (-215) !empty() in function detectMultiScale」などのエラー メッセージが表示されることは珍しくありません。このエラーは通常、顔カスケード分類子 XML ファイルのロードまたは参照方法に問題があることを示します。
この問題に対処するには、XML ファイルへのパスが正しく指定されていることを確認することが重要です。提供されている元のコードでは:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
OpenCV ディレクトリ内の XML ファイルの特定の場所は明示的に定義されていません。その結果、OpenCV はこれらのファイルを見つけてロードするのに苦労する可能性があります。
この問題に対する推奨される解決策は、cv2.data.haarcascades プロパティを利用して、必要な XML ファイルを自動的に見つけてロードすることです。コードを次のように更新すると、
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
OpenCV は、haarcascades フォルダー内のデフォルトの場所から XML ファイルを自動的に取得します。このアプローチにより、特定のパスをハードコーディングすることなく正しいファイルが読み込まれるようになり、問題が解決され、顔検出が成功するようになります。
以上が## OpenCV で顔を検出すると「エラー: (-215) !empty() in function detectMultiScale」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。