Pythonによる画像処理に利用するライブラリを現役エンジニアが解説【初心者向け】
初心者向けにPythonによる画像処理に利用するライブラリについて現役エンジニアが解説しています。OpenCVはインテルが開発・公開したオープンソースのコンピュータビジョンのライブラリです。画像の変更などにうまく活用していきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Pythonによる画像処理に利用するライブラリについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。
Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まるでしょう。
なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
Pythonによる画像処理に利用するライブラリについて詳しく説明していくね!
お願いします!
OpenCVとは?
Open CVとは、インテルが開発・公開したオープンソースのコンピュータビジョンのライブラリです。
もともとはC言語の関数形式だったものの、Open CV3になりC++のAPIを使うことが推奨されています。
C++やPythonの他にはJavaやMATLABに標準対応したパッケージが存在します。
Open CVで提供されている主な機能は以下の通りです。
- 画像処理(色彩変換、輪郭検出など)
- 構造解析
- 画像の加工(文字入力、図形の挿入など)
- Webカメラの入力
- GUIでの出力
他にも様々な機能があるため、調べて使用していきましょう。
OpenCV以外の画像処理ライブラリの比較
Pythonでは、OpenCV以外にも画像処理ライブラリが存在します。
主要な、Pillowとscikit-imageとOpenCVの比較を解説します。
ライブラリ名 | 形式 | 利用例 | 特徴 |
Pillow | Imageオブジェクト | 基本的な画像表示や画像処理が可能 | 初心者向け |
scikit-image | numpy配列 | 科学専門分野の画像分析が可能 | 画像の読み込み速度が早い |
OpenCV | numpy配列 | 画像処理、構造解析、パターン認識等で利用 | リサイズ、色彩変換の画像変換速度が早い |
OpenCVのインストール
それでは、Open CVを使ってみます。今回はPythonでOpen CVを使用する場合のインストール方法を紹介していきます。
Windowsでのインストール
Windowsの場合はpipでセットアップすることが可能です。
コマンドプロンプトかPowerShellでpipコマンドが使える前提で下記コマンドを実行します。
なお、パソコンには、python3.5以上がインストールされているものとします。
pip install opencv-python
これでnumpyなどの依存パッケージもまとめてインストールされます。
仮に、エラーが出る場合は下記コマンドでpipをアップデートしましょう。
pip install --upgrade pip
Macでのインストール
macの場合はhomebrewを使ったインストールが簡単です。
事前にhomebrewをインストールした上でこのあとの内容を進めましょう。
最新版のpythonをインストールします。
brew install python3
pythonでOpenCVを動かす際にはnumpyのインストールが必須です。
以下のコマンドでnumpyのインストールを行います。
pip3 install numpy
そして、フォーミュラと呼ばれるインストール、ビルド方法が書かれたスクリプトをOpenCV用に追加しましょう。
brew tap homebrew/science
では、OpenCVをインストールします。
Python3でインストールする場合は下記のコマンドを実行してください。
brew install opencv3 --with-python3 --without-python
Linux(Raspberry Pi)でのインストール
LinuxはOSによって様々なインストール方法があるため、この記事ではRaspberry Piでのインストール方法を紹介します。
まずは、下記コマンドを実行してOpenCVをインストールするための依存パッケージをインストールしましょう。
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
続いて下記コマンドを実行して、pipでOpenCVをインストールしてください。
sudo pip3 install opencv-python sudo pip3 install opencv-contrib-python
最後にOpenCVを動かすために必要なプログラムのインストールをしましょう。
sudo apt install libhdf5-103 libqtgui4 libatlas3-base libjasper1 libqt4-test
OpenCVの使い方
インストールを完了したOpenCVの使い方をみていきます。
import cv2でライブラリをインポートしましょう。
ここでは入力、処理、出力のそれぞれでよく使用されるAPIを解説していきます。
入力
cv2.VideoCapture()
上記は、動画形式のデータを読み込む際に使わるコードです。
引数には整数を入れるとパソコンに接続されているWebカメラに接続できます。
他にも引数に動画のパスを指定すれば、動画を読み込むことも可能です。
読み込んだときには、ループなどで1フレームずつ読み込んだ画像に対して処理していきます。
cv2.imread()
このコードは静止画を読み込む際に使います。
引数に画像ファイルのパスを指定すれば、画像データを読み込むことができるでしょう。
処理
cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
入力で読み込んだ画像データに対して色彩変換を行うAPIです。
1つ目の引数には入力で読み込んだ画像データの変数を指定し、2つ目の引数には変換したいカラーコードを指定します。
cv2.resize(img, (1066,200))
こちらは画像のサイズを変更するAPIです。
cvtColorと同様に1つ目の引数には画像データの変数を指定し、2つ目にはタプルで縦と横の画像サイズを指定しましょう。
出力
cv2.imshow("gray", gray)
画像データを別ウィンドウで出力するAPIです。
処理した結果をここで出力させることが可能です。
1つ目の引数にはウィンドウのタイトル、2つ目の引数には画像データを指定します。
cv2.imwrite('./output.jpg', gray)
画像データを書き込むためのAPIです。
1つ目の引数には保存するファイル名、2つ目の引数には保存したい画像データを指定してください。
OpenCVを利用して画像処理してみよう
ここでは、実際に画像処理をやってみましょう。
今回はOpen CVのサンプルでおなじみの下の画像を使用して処理を行っていきます。
画像を右クリックして任意のフォルダに保存しておきましょう。
保存したら以下のコードを画像ファイルと同じフォルダに保存して実行します。
import cv2 # 画像を読み込む img = cv2.imread("./lena.jpg") # グレースケールに変換 gray = cv2.cvtColor(img, cv2.COLOR_RGBA2GRAY) #画像をリサイズ resized = cv2.resize(img, (1066,200)) # 結果を出力 cv2.imshow("gray", gray) cv2.imshow("resize", resized) while True: # Escキーを入力したら終了 if cv2.waitKey(1) == 27: break cv2.destroyAllWindows()
実行すると、以下のようにリサイズした画像とグレースケールに変換した画像が出力されます。
まとめ
今回はPythonで画像処理を行う方法を学びました。
Pythonでは画像処理のための機能が充実しているので、とても便利なライブラリとなっています。
画像処理を行う際には、Open CVについて学習しましょう。
執筆してくれたメンター
メンター三浦
モバイルゲームを運用している会社のエンジニアをしています。趣味でWEB開発やクラウドコンピューティングもやっており、ソフトもハードもなんでもやります。 TechAcademyジュニアではPythonロボティクスコースを担当しています。好きな言語はPython, Node.js。 |
Pythonによる画像処理に利用するライブラリがよく分かったので良かったです!
ゆかりちゃん、これからも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、Pythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。