画像処理ライブラリの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にすると、無限に待ちます。つまり何かキーが入力されるまで待ち続ける、という仕組みにできます。
おわりに
いかがでしたでしょうか。文字化け問題は本当につらいですね。。日本人としては一生付き合わないといけないのかもしれません。