目次はじめに結果出力について基本的な画像処理おわりにはじめに前回は、Python(Anaconda)とOpenCVをインストールし、開発環境を構築しました。今回は、実際にOpenCVを利用して画像処理を行っていこうと思います。結果出力について画像処理を行い、処理後の画像表示は主に以下の方法があります。Notebookを利用し、Notebbook上でインライン表示それぞれについて、利用方法を下記します。ファイル出力cv2.imwriteメソッドにてファイルを出力し、結果ファイルを保存します。cv2.imread('input.jpg')cv2.imwrite('output.jpg',img)画面出力cv2.imshowメソッドにて画像表示ウィンドウを表示します。imshowメソッドのみだと表示すると同時に終了してしまうため、キー入力による待機処理を使用します。Notebookとはプログラムを実行し、実行結果を記録出来るツールです。Anacondaをインストールすると同梱されており、Pythonに限らず多種の言語を使用出来ます。usersJupyterNotebookで画像をインライン表示する場合は、以下の2通りがあります。matplotlibを利用matplotlibとはグラフを作成・表示するPythonのライブラリです。Notebook上でmatplotlibを利用した方法で表示していこうと思います。基本的な画像処理OpenCVで出来る基本的な画像処理を試していきます。今回、利用した画像は以下のポストの写真です。(※記事投稿のため、実際の画像よりも縮小されております。画像処理後の結果も縮小して表示しております。)インプット画像グレースケールまずはグレースケール表示です。いわゆる白黒写真です。明暗のみの情報になるので画像処理ではよく使用されます。白と黒の2色のみで構成される画像に変換します。cv2.thresholdメソッドを使用して、グレースケール画像から2値化します。#matplotlibでグレースケールを使用する場合はグレースケールで読み込むように指定plt.imshow(threshold_img)2値化トリミング画像の切り抜きを行います。#matplotlibで表示する場合はRGBからBGRに変換plt.imshow(trim_img)トリミング(若干わかりづらいですが、左上のハイビスカスが無くなっています。)リサイズ画像のサイズを変更します。#matplotlibで表示する場合はRGBからBGRに変換plt.imshow(resize_img)リサイズ射影変換ある平面を別の平面に射影する変換を行います。書類などをカメラで撮影して、正面からの平面に変換しているのをよく見かけますね。ここでは、numpyというPythonの数値計算ライブラリを使用します。画像の輪郭を検出します。#第2,3引数は閾値plt.gray()plt.imshow(canny_img)エッジ検出ぼかし画像を平滑化させるガウシアンフィルタを用いて、画像にぼかし処理をいれます。ガウシアンフィルタにはカーネルサイズおよび標準偏差を調整して、ぼかし具合を調整します。どちらのパラメータも数値が大きくなるとぼかし具合が強くなります。標準偏差に0を指定すると、カーネルサイズ(正の奇数を指定)から自動計算されます。画像のモザイク処理は、画像を一旦縮小し、元の大きさに拡大することでモザイク処理を施すことが出来ます。線の描画line関数で画像に線を追加して描画します。#matplotlibで表示する場合はRGBからBGRに変換plt.imshow(img)線の描画(左上から右下に線を入れています)おわりに今回はOpenCVでどのような画像処理が出来るのか、基本的な処理を見ていきました。次回は、顔検出分類器を使用して顔検出をして遊んでいきたいと思います。