OSS

Jupyter NotebookでOpenCVを触ってみた【インストール~動作確認】

この記事ではWSL(Windows Subsystem for Linux)の環境にJupyter Notebookの環境を構築する手順、およびJupyter Notebook上でOpenCVの動作確認を行う手順について解説する。

尚、WSL環境の構築方法については以下の構築手順を参照下さい。
https://sidefire-engineer.com/node-red入門/
以降の手順からは、WSLにUbuntuの環境を構築した想定で解説していきます。

Jupyter Notebookのインストール

WSLのUbuntu環境を立ち上げ、以下を実行しJupyter Notebookをインストールします。

sudo apt install jupyter-core

OpenCVのインストール

今回は Notebook上でOpenCVの動作確認をしたいので、OpenCVのインストールを行います。

pip install opencv-python

ついでに、描画向けツールであるmatplotlibもインストールしておきます。

pip install matplotlib

Jupyter Notebookの起動

WSLの任意のディレクトリ上で以下を実行します。

jupyter notebook

上記を実行するとURLが表示されるため、任意のブラウザのアドレスバーにコピペします。
ブラウザ上に以下の表示がされれば、無事Jupyter Notebookが起動できていることが分かります。

file

OpenCVの動作確認

必要なライブラリをインポートします。

import cv2
import matplotlib.pyplot as plt

まずは画像の読み込みをやってみます。
読み込むための画像ですが、今回はkaggle向けのデータセットから準備します。尚、kaggleとは機械学習のコンペ向けサービスを提供しているプラットフォームです。
https://www.kaggle.com/datasets

上記データセットから、猫の画像をcat.jpegとして保存し、Notebookを起動したディレクトリに配置させtます。
file
読込みにはcv2.imread()を使います。また、読み込んだ画像を表示するため、plt.imshow()を使用します。
Notebook上で以下を実行します。

img = cv2.imread('cat.jpeg')
plt.imshow(img)

扱うデータをその画面上で即座に確認できるところがJupyter Notebookの強みです。機械学習でデータを扱う用途では非常に便利ですね。

上記実行後、以下のような猫が表示されました。
file
これは、元データの色の配列がBGR(青、緑、赤)であるからで、Matplotlibのplt.imshow()ではRGB(赤、緑、青)であることが原因のようです。
そこで、cv2.cvtColor()を使って色配列の変換を試してみます。

img = cv2.imread('cat.jpeg')
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img2)

これで、無事元の色と同じ状態の猫が表示されました。
file

pythonファイルの保存

Notebook上で書いたコードを名前を付けて保存する場合は、画面上部の「Untitled1」となっている部分を変更します。
ここでは「notebook_test」として保存してみます。

file

そうすると、notebook_test.ipynbというファイルが生成されています。Notebook上で再度編集したい場合はこの.ipynbファイルを開きます。
尚、このipynbはjsonファイルとなっており、はソースの情報だけでなく、Jupyter Notebookが適切に取り扱うための情報も含まれているようです。
そのため、pythonコードそのものではありません。pythonコードとして保存したい場合は、[FILE]-[Download as]-[Python(.py)]を選ぶとpythonコードとして保存されます。

file

まとめ

この記事ではWSL環境でのJupyter Notebookの導入・および起動方法、そしてNotebook上でのOpenCVの動作確認について解説しました。
OpenCVの使い方の詳細説明については今後の記事で説明していきたいと思います。

ABOUT ME
kafka
<経歴> 某大手IT企業でハード設計6年経験後、ソフト設計に携わり始めて4年目。 <発信内容> 忙しいITエンジニアに向けて、日経新聞、IT media NEWS、Ledge.ai等、様々なニュースサイトから気になるニュースをピックアップ。自己研鑽に向けた技術情報も発信。 <趣味> 料理、散歩、Youtube視聴 <SNS> Twitter https://twitter.com/ken07949464