【Python 3爬虫類学習ノート】人の顔認識と検証コード画像の解読


OpenCVで図を読み、表示します.
OpenCV(Open Souce Computer Vision Library)はプラットフォームをまたぐコンピュータビジョンライブラリです.OpenCVはインテルから発起して開発に参加します.商業と研究分野で無料で利用できます.OpenCVはリアルタイムの画像処理及びコンピュータ視覚プログラムの開発に利用できます.現在では、人機のインタラクティブ、人顔認識、動作認識、動き追跡などの分野に広く応用されています.OpenCVをインストールするには、http://www.lfd.uci.edu/~gohlke/pythonlibs/本機Pythonバージョンに対応するOpenCVファイルを見つけ、ファイルをクリックしてハードディスクにダウンロードし、コマンドウィンドウでコマンドラインでインストールできます.
pip install d:/opencv_python‑3.4.4+contrib‑cp36‑cp36m‑win_amd64.whl
プログラムでOpenCVライブラリを使用するには、下記のコードで導入する必要があります.
import cv2
リンクライブラリをインポートした後、画像を表示するためのウィンドウを作成します.
cv2.namedWindow(    [,     ])
ウィンドウの識別値は、次のような値があります.
  • cv 2.WINDOW_AUTOSTIZE:システムのデフォルト値は、画面サイズによって自動的に調整されます.手動でウィンドウサイズを変更することはできません.
  • cv 2.WINDOW_FREERATIO:画像のサイズを自由に変えたり、ウィンドウのサイズを変えたりできます.
  • cv 2.WINDOW_FLLSCREEN:全画面のウィンドウは、ウィンドウのサイズを変えることができません.
  • cv 2.WINDOW_KEEPRATION:画像を変えると、大きい時間は元の比率を維持し、ウィンドウのサイズは可変です.
  • cv 2.WINDOW_NORMAL:ウィンドウのサイズを変えることができます.
  • cv 2.WINDOW_OPEGL:OpenGL(オープンソースライブラリ)に対応します.例えば、デフォルトモードでImageというウィンドウを作成します.
  • cv2.namedWindow("Image")
    
    ウィンドウが使用されない場合は、閉じられます.ウィンドウを閉じる方法は二つあります.一つ目は指定されたウィンドウを閉じることです.例えば、
    cv2.destroyWindow("Image")
    
    二つ目の方法は、開いているすべてのウィンドウを閉じて、複数のウィンドウを同時に開いたら、すべてのウィンドウを閉じます.
    cv2.destroyAllWindows()
    
    ウィンドウに画像を表示するには、まず画像ファイルを読み込む必要があります.
         = cv2.imread(      [,     ])
    
    画像ファイルのパスにファイル名だけがあれば、画像ファイルとPythonプログラムファイルが同じフォルダにあることを示します.画像ファイルのパスはまた、「media\img.jpg」などの相対パスを使用することができる.識別情報の読み取り値は、以下の値とすることができる.
  • cv 2.IMREAD_COLOR:カラー画像を読み込みます.その値は1です.これはシステムのデフォルトです.
  • cv 2.IMREAD_GRAYA SCALE:階調モードで画像を読み込み、その値は0です.
  • cv 2.IMREAD_UNCHANGE:画像オリジナルモードで画像を読み込み、その値は−1です.例えば、mediaフォルダ内のimg.jpgパターンファイルをグレースケールモードで読み出し、変数
  • に保存する.
    img = cv2.imread("media\\img.jpg", 0)
    
    OpenCVは圧倒的に多くの画像フォーマットをサポートします.bmp、.jpg、.dib、.png、.webp、.pbm、.pgm、.ppm、.sr、ras、.tif、.tiffなど.ウィンドウに画像を表示するシンタックスは以下の通りです.
    cv2.imshow(    ,     )
    
    例えば、画像変数はImageウィンドウに表示されます.
    cv2.imshow("Image", img)
    
    表示された画像をユーザに観察させるために、通常は画像表示後に待ち受けコードを追加し、ユーザが任意のキーまたは時間を押したときにプログラムを実行し続けることを知っている.
    cv2.waitKey(n)
    
    nは待ち時間であり、単位はミリ秒である.nの値が0であれば、時間が無限長であり、ユーザが任意のキーを押してプログラムを継続することができます.
    図をOpenCVで表示する
    OpenCVでグラフィックファイルを読み込み、それぞれカラーとグレースケールで表示します(グラフィックファイルimg 01.jpgはmediaフォルダにあります).
    import cv2
    cv2.namedWindow("ShowImage1")
    cv2.namedWindow("ShowImage2")
    image1 = cv2.imread("media\\img01.jpg")
    image2 = cv2.imread("media\\img01.jpg", 0)
    cv2.imshow("ShowImage1", image1)
    cv2.imshow("ShowImage2", image2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    画像ファイルを保存
    画像はOpenCV処理後に保存できます.保存画像の文法は以下の通りです.
    cv2.imwrite(    ,     [,     ])
    
    ディスクの識別値は、以下の値とすることができる.
  • cv 2.CV_IMWRITE_JPEG_QUALITY:ピクチャフォーマットを設定すると.jpegまたは.jpgフォーマットのピクチャ品質は、その値が0から100まで(数値が大きいほど品質が高い)、デフォルト値は95です.
  • cv 2.CV_IMWRITE_WEBP_QUALITY:ピクチャフォーマットを設定します.webpフォーマットのピクチャ品質は、その値は0から100までです.
  • cv 2_CV_IMWRITE_PNG_COMPRESSION:*.pngフォーマットピクチャの圧縮比を設定し、その値は0から9まで(数値が大きいほど圧縮比が大きい)、デフォルト値は3です.
  • 例えば、360変数をimg.jpgファイルに保存し、画質は70です.
    cv2.imwrite("img.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 70])
    
    図ファイルをOpenCVで保存します.
    まずOpenCVで画像ファイルを読み込み、異なる画質で保存します.
    import cv2
    cv2.namedWindow("ShowImage")
    image = cv2.imread("media\\img01.jpg", 0)
    cv2.imshow("ShowImage", image)
    cv2.imwrite("media\\img01copy1.jpg", image)
    cv2.imwrite("media\\img01copy2.jpg", image, [int(cv2.IMWRITE_JPEG_QUALITY), 50])
    cv2.waitKey(0)
    cv2.destroyWindow("ShowImage")
    
    ファイルマネージャから見ることができます.img 01.jpgはソースファイルです.img 01 copy 1.jpgは品質95のグラフィックファイルです.ファイルサイズはオリジナルファイルよりやや小さいです.img 01 copy 2.jpgは品質が50のグラフィックファイルで、ファイルのサイズはソースファイルの5分の1ぐらいです.