Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第1回】Opencvを用いた画像の表示、回転、リサイズ、トリミング処理

はじめに

OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリで、画像処理・画像解析および機械学習等の機能を持つC/C++JavaPythonMATLAB用ライブラリとなっています。

Opencvには以下のような機能があります。

  • グレースケール化
  • 2値化
  • 輪郭の検出
  • 顔検出
  • ノイズ除去
  • テンプレートマッチング

本記事では、Opencvを用いた画像の表示、上下左右反転、回転、リサイズ、トリミング処理に方法について紹介します。

SAMURAI TERAKOYA

 

1. ライブラリのインストール

Opencvは以下のコマンドでインストールします。

 

2. 本記事で使用する画像

本記事で使用する画像は以下の写真です。富士河口湖から富士山を写した1008×756 pixelの写真です。

 

3. 画像の読込&表示(cv2.imread()、cv2.imshow())

以下に画像を読み込んで表示するコードを記載します。画像の読込にはcv2.imread()を用います。画像の表示にはcv2.imshow() を用います。cv2.waitkey()で表示する時間を指定することができ、cv2.waitkey(0)とすることでキーボードが押されるまで表示されます。cv2.destroyAllWindows() は現在までに作られた全てのウィンドウを閉じます。

画像はそのまま表示されます。

 

4. 画像の上下左右反転(cv2.flip())

画像を上下左右反転させるにはcv2.flip()を用います。第一引数にndarrayのイメージデータ、第二引数にflipcodeを指定します。

  • 上下反転:flipcode=0
  • 左右反転:flipcode=1
  • 上下左右反転:flipcode=-1

結果は以下のようになります。

【上下反転】

【左右反転】

【上下左右反転】

 

5. 画像の回転(cv2.rotate())

画像の回転にはcv2.rotate()を用います。第一引数にndarrayのイメージデータ、第二引数にrotateCodeを指定します。rotateCodeは回転方向や角度を指定します。指定項目は以下です。

  • 時計回りに90度回転:rotateCode=cv2.ROTATE_90_CLOCKWISE
  • 反時計回りに90度回転:rotateCode=cv2.ROTATE_90_COUNTERCLOCKWISE
  • 180度回転:rotateCode=cv2.ROTATE_180

以下のコードのように指定することで回転した画像を取得できます。

結果は以下の様になります。

【時計回りに90度回転】

【反時計回りに90度回転】

【180度回転】

 

6. 画像のリサイズ(cv2.resize())

画像のリサイズにはcv2.resize()を用います。第一引数にndarrayのイメージデータ、第二引数にdsizeを指定します。dsizeにはリサイズ後のサイズを(幅, 高さ)で指定します。以下のコード例では元の画像サイズに0.5を掛けた値にリサイズしています。

一定の比率を掛けてリサイズする方法には以下の様にfx、fyを指定する方法もあります。fx, fyに割合を指定すると元の画像に対してリサイズしてくれます。以下の例ではfx、fyに0.5を指定しています。

結果は以下の様になります。上記二つとも同じ結果になり、サイズが半分になっています。

 

7. トリミング

トリミングはスライシングすることでできます。スライシングでは、[高さ方向(上):高さ方向(下), 幅方向(左):幅方向(右)]で値を指定します。元画像は1008×756 pixel(幅×高さ)です。

出力結果は以下の様になります。富士山がメインの写真にトリミングされましたね。

 

オススメ書籍

Pythonで始めるOpenCV4プログラミング

実践OpenCV4 for Python 画像映像情報処理と機械学習

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、Opencvを用いた画像の表示、上下左右反転、回転、リサイズ、トリミング処理に方法について紹介しました。本記事の内容は基本的な操作なのでぜひ覚えましょう。