Fund]を選択してhttps://do.co/w4do-ctaの一部として寄付を受け取りました[寄付のために書く]プログラム。前書き画像は毎日生成される大量のデータを構成するため、これらの画像を処理する能力が重要になります。画像を処理する1つの方法は、_顔検出_を使用することです。顔検出は、機械学習を使用して画像内の顔を検出する画像処理のブランチです。Cascadeは、画像内の目的のオブジェクトを見つけるために使用されるオブジェクト検出方法です。アルゴリズムは、多数の正および負のサンプルでトレーニングされます。ここで、正のサンプルは、目的のオブジェクトを含む画像です。ネガサンプルは、目的のオブジェクト以外のものを含む可能性のある画像です。訓練された分類器は、新しい画像で関心のあるオブジェクトを見つけることができます。Cascade]モデルをhttps://opencv.org/[OpenCV]およびhttpsから使用します。//www.python.org/[Python]は、画像から顔を検出して抽出します。OpenCVは、画像の処理に使用されるオープンソースのプログラミングライブラリです。+]、仮想環境を作成します。手順1-ローカル環境の構成コードの記述を開始する前に、まずコードを保持するワークスペースを作成し、いくつかの依存関係をインストールします。+`コマンドでプロジェクト用のディレクトリを作成します:mkdir新しく作成したディレクトリに移動します。cd次に、このプロジェクトの仮想環境を作成します。仮想環境は異なるプロジェクトを分離するため、異なる依存関係が混乱を引き起こすことはありません。+`という名前の仮想環境を作成します。venv隔離された環境をアクティブにします。/bin/activateこれで、プロンプトの前に仮想環境の名前が付いていることがわかります。+`ファイルを作成します。このファイルは、必要なPython依存関係を示しています。requirements.txt次に、このチュートリアルを完了するには、3つの依存関係をインストールする必要があります。+:https://en.wikipedia.org/wiki/NumPy[numpy]は、大規模な多次元配列のサポートを追加するPythonライブラリです。配列を操作する数学関数の大規模なコレクションが含まれています。+:これは、ヘルパー関数を含むOpenCVの拡張ライブラリです。+:これはPythonが使用するコアOpenCVモジュールです。ファイルに次の依存関係を追加します。requirements.txtnumpyopencv-utilsopencv-pythonファイルを保存して閉じます。`に渡すことで、依存関係をインストールします。+`ファイルの場所を指定します。requirements.txtこのステップでは、プロジェクトの仮想環境をセットアップし、必要な依存関係をインストールします。次のステップで入力画像から顔を検出するコードの記述を開始する準備ができました。ステップ2-顔検出スクリプトの作成と実行このセクションでは、イメージを入力として受け取り、次の2つのことを返すコードを作成します。入力画像で見つかった顔の数。検出された各顔の周りに長方形のプロットがある新しい画像。コードを保持する新しいファイルを作成することから始めます。app.pyこの新しいファイルで、最初に必要なライブラリをインポートして、コードの記述を開始します。」をインポートします。+`などの一般的なPython関数をインポートします。sys次に、入力画像が実行時にスクリプトに引数として渡されるように指定します。+`関数によって返される値を変数に割り当てることです。sys.argv[1]画像処理の一般的な方法は、最初に入力画像をグレースケールに変換することです。これは、色ではなく輝度を検出すると、一般的にオブジェクト検出の結果が向上するためです。次のコードを追加して、入力画像を引数として取得し、グレースケールに変換します。.imread()`関数は、スクリプトに引数として渡される入力画像を取得し、OpenCVオブジェクトに変換します。.cvtColor()+`関数は入力画像オブジェクトをグレースケールオブジェクトに変換します。画像を読み込むコードを追加したので、指定した画像の顔を検出するコードを追加します。+`オブジェクトを作成します。Cascadeを使用できます。`オブジェクトに適用します。これにより、画像内で検出されたすべての顔の_長方形のリスト_が生成されます。Rect(x、y、w、h)+`の形式の、画像からのピクセル位置のコレクションです。コードで使用する他のパラメーターの概要は次のとおりです。+:これは、前にロードしたOpenCVグレースケールイメージオブジェクトの使用を指定します。+:このパラメーターは、各画像スケールで画像サイズを縮小するレートを指定します。トレーニング中のモデルのスケールは固定されているため、検出を改善するために入力画像を縮小できます。+」で定義されたしきい値制限に達した後に停止します。+:このパラメーターは、各候補長方形がそれを保持する必要がある近傍または検出の数を指定します。値を大きくすると誤検知が少なくなる場合がありますが、値が高すぎると真の陽性が除去される可能性があります。+:これにより、ピクセル単位で測定可能な最小オブジェクトサイズを定義できます。このパラメーターより小さいオブジェクトは無視されます。+`関数でカウントされます。検出された顔の数は、スクリプトの実行後に出力として返されます。.rectangle()+`メソッドを使用して、検出された顔の周りに長方形を描画します。`メソッドから返されたピクセル位置のリストを反復処理します。+`は、元の入力画像上に長方形を描くようにコードに指示します。h)`は、検出されたオブジェクトの4つのピクセル位置です。+`はこれらを使用して、入力画像で検出されたオブジェクトの周囲に長方形を配置して描画します。`(0、255、0)`は形状の色です。この引数は、BGRのタプルとして渡されます。青には「(255、0、0)」を使用します。この場合、緑を使用しています。「2」は、ピクセル単位で測定される線の太さです。`として書き込みます。false`ステータスをコンソールに返します。これにより、スクリプトの実行後に書き込みが成功したかどうかがわかります。",status)完成したファイルは次のようになります。status)すべてが正しく入力されていることを確認したら、ファイルを保存して閉じます。コードが完成し、スクリプトを実行する準備が整いました。ステップ3-スクリプトの実行この手順では、画像を使用してスクリプトをテストします。+`スクリプトと同じディレクトリに保存します。このチュートリアルでは、次の画像を使用します。[携帯電話を見ている4人の入力画像]同じイメージでテストする場合は、次のコマンドを使用してダウンロードします。https://assets.digitalocean.com/articles/CART-63965/people_with_phones.pngスクリプトをテストするためのイメージを作成したら、スクリプトを実行し、引数としてイメージパスを提供します。app.pyスクリプトの実行が完了すると、次のような出力が表示されます。+`の出力は、更新されたイメージがファイルシステムに正常に書き込まれたことを示しています。ローカルマシンでイメージを開き、新しいファイルの変更を確認します。[検出された顔の出力画像]スクリプトが入力画像で4つの顔を検出し、それらをマークするために長方形を描いたことがわかります。次のステップでは、ピクセル位置を使用して画像から顔を抽出します。Cascadeを使用して画像内の顔の周囲の長方形を検出および描画するコードを作成しました。このセクションでは、コードを変更して、検出された顔を画像から独自のファイルに抽出します。+`ファイルを再度開くことから始めます。+`行の下に強調表示された行を追加します。`リストからピクセル位置をプロットします。+」メソッドで検出された各オブジェクトのピクセル位置です。次に、コードは、オブジェクトが見つかり、ローカルに保存されることを示す出力を印刷します。+`メソッドを使用して、プロットを新しいイメージとして保存します。プロットの幅と高さを、書き込まれる画像の名前に追加します。これにより、複数の顔が検出された場合に名前が一意になります。+`スクリプトは次のようになります。status)要約すると、更新されたコードはピクセル位置を使用して、画像から顔を新しいファイルに抽出します。コードの更新が完了したら、ファイルを保存して閉じます。コードを更新したので、スクリプトをもう一度実行する準備ができました。app.pyスクリプトが画像の処理を完了すると、同様の出力が表示されます。file-system:サンプル画像に含まれる顔の数に応じて、多少の出力が表示される場合があります。スクリプトの実行後に作業ディレクトリの内容を見ると、入力画像で見つかったすべての顔のヘッドショットのファイルが表示されます。[ディレクトリ一覧]作業ディレクトリに収集された入力画像から抽出されたヘッドショットが表示されます。[抽出された顔]この手順では、入力画像から検出されたオブジェクトを抽出し、ローカルに保存するようにスクリプトを変更しました。結論このチュートリアルでは、OpenCVとPythonを使用して、入力画像から顔を検出、カウント、抽出するスクリプトを作成しました。Cascadeを使用して異なるオブジェクトを検出するか、https://docs.opencv.org/3.3.0/dc/d88/tutorial_traincascade.htmlの方法を学習できます。