ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

画像処理ライブラリのOpenCVをPythonで使う

今日は画像処理に取り組みます。

ライブラリについて

Pythonにはいくつものライブラリ(何かの処理をするためのまとまった関数のようなもの)が用意されていて、それをインストールするだけで様々な処理が簡単にできるようになります。

これがPython人気の理由の一つですね。

OpenCVのインストール

インストールの方法はいくつかありますが、pipというコマンドを使って、Jupyterでインストールします。

まずJupyterファイルを作ります。その前に、適当なフォルダを作り、「表示」→「ファイル拡張子」にチェックを入れておきましょう。

これってデフォルトでオフになってるんですよね。拡張子って何?っていう人向けに混乱させないようにしてるんでしょうけど、逆に混乱する気が・・・。

それはさておき、ウィンドウ上で、右クリック→新規作成→テキストドキュメントで、新しいファイルを作成します。

ファイル名を変更しましょう。ここでは「opencv.ipynb」としています。ファイル名は何でもよいですが、拡張子の.ipynbは間違えないようにしましょう。 拡張子変更してもよいか聞かれますので、「はい」と選択しましょう。

ファイルをダブルクリックで開くとVS CodeのJupyter Notebookが開きます。 ここで下記のように入力し、Shift+Enterで実行します。

!pip install opencv-python

pip install などのコマンドは通常コマンドプロンプトやPower Shellなどで実行するものですが、頭に「!」を入れるとJupyter Notebook上で実行ができます。

これでインストール完了です。

ついでにpipをアップグレード

結果を見ると「WARNING」とあり、pipに新しいバージョンがあると教えてくれます。 同じような要領で以下のように実行することでpipをアップグレードできます。

!pip install pip --upgrade --user

--upgradeオプションはインストールではなくアップグレードするよ、という意味。

--userはこのログインユーザの環境だけに適用する、という意味です。

--userをつけないとアクセス権がないとエラーになったためつけています。

OpenCVで画像を表示してみる。

事前に何かの画像をipynbファイルを入れたフォルダに入れておきます。今回は画像処理に有名なレナ画像を入れていますが、何でもよいです。

VS Codeに戻り、プログラムを入力します。単純に画像を表示するプログラムです。

# インポート(OpenCVを使うよ、という宣言)
import cv2

# 画像ファイルの読み込み
img = cv2.imread("Lenna.jpg")

# 読み込んだ画像の出力。ウィンドウのタイトルを「Lennaさん」とする
cv2.imshow('Lennaさん', img)
# 何かのキーを入力待ちする。64bitのマシンの場合は「& 0xFF」が必要らしい
cv2.waitKey(0) & 0xFF
# ウィンドウを閉じる
cv2.destroyAllWindows()

Shift+Enterで実行するとレナさんが表示されます。

ちなみにこのopencv、日本語には対応していないようです。

ですので、タイトルが文字化けしてしまいます・・・。

特にパスに日本語が入っているとエラーになるので注意して下さい。

少し解説

大体コメントアウトで書いている通りなのですが、 cv2.waitKey(0)の引数について少し触れます。 このwaitKeyの引数は、何ミリ秒待つかを指定できます。 例えばcv2.waitKey(5000)とすると、5,000ミリ秒=5秒だけ待ちます。 0にすると、無限に待ちます。つまり何かキーが入力されるまで待ち続ける、という仕組みにできます。

おわりに

いかがでしたでしょうか。文字化け問題は本当につらいですね。。日本人としては一生付き合わないといけないのかもしれません。