OpenCVで画像処理を行った場合、matplotlibを使って編集した画像を表示て確認したいと思う事が多いと思います。
しかし、多く環境で画像が表示されないという問題に遭遇してしまいます。
そこで、この問題を簡単に解消する方法をご紹介したいと思います。
ネットの記事で色々と対処方法が提案されていますが、私自身も色々試して一番簡単で使い勝手の良い方法をご紹介します。
matplotlib show()で画像が表示されない場合の対処方法
画像が表示されない理由
対処方法をご紹介する前に、画像が表示されない理由を簡単に説明します。
私も専門家では無いので詳しくは理解出来ていませんが、簡単に言うとmatplotlibで画像をディスプレイ上に表示する為の設定であるbackendの設定がデフォルトでは使い物にならないという事です。
今回はこの設定を変更する事で正しく画像を表示させます。
画像が表示されなかった環境
私が遭遇した画像が表示されなかった環境は以下の通りです。
- Windows10 + Anaconda(Python)
- Mac + Anaconda(Python)
多くの人が上記の環境に合致すると思われるので、ほとんどの人がmatplotlibで画像が表示されないという問題に遭遇していると思われます。
画像が正しく表示されるようにする設定
では早速、画像を正しく表示する方法を説明します。
ネットの記事を調べてみると、多くの記事で、matplotlibrcという設定ファイルのbackendを書き換えましょう!と書かれています。
しかし、ある記事を読むと設定の変更は良くないと書かれていたり、正直、設定を探して変更するのもめんどくさいので、今回、matplotlibを使用する際、簡単な「おまじない」を書くだけで解決出来る方法でご紹介します。
まずは、下記の通り、対処を行う前の通常のコードで読み込んだ画像が表示されるか確認してみて下さい。
※’test.jpg’の部分はご自身の表示させたい画像ファイルのパス+ファイル名に書き換えて下さい。
import cv2 import matplotlib.pyplot as plt # 画像の読み込み img = cv2.imread('test.jpg') # カラーデータの色空間の変換 plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 画像の表示 plt.show()
このコードの実行で画像が表示できた人は何もする必要はありません。
最初から正しい設定が入っていたという事です。
このコードを実行しても画像が表示されない人は次に進んで下さい。
参考までに、私の環境では下記の表示が出たのですが、画像は表示されませんでした。
<Figure size 640x480 with 1 Axes>
このような表示が出た人は次に紹介する方法で問題が解決します。
その1:設定を上書きする方法
では、下記の赤字のコードを追加して実行してみて下さい。
赤字の部分が画像を表示する為に必要な設定を上書きするコードになります。
import matplotlib matplotlib.use('TkAgg') import cv2 import matplotlib.pyplot as plt # 画像の読み込み img = cv2.imread('test.jpg') # カラーデータの色空間の変換 plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 画像の表示 plt.show()
私の環境では狐の写真を込みこませんたので、上図のとおりの写真が無事に表示されました。
たったこれだけOKです。
その2:jupyter Notebookを使用している場合
もう一つ、jupyter Notebookを使用している場合の対処方法をご紹介します。
jupyter Notebookをお使いの場合、下記の通り、マジックコマンド(赤字の部分)を入力するだけで画像を表示できるようになります。
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
# 画像の読み込み
img = cv2.imread('fox_img.jpg')
# カラーデータの色空間の変換
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 画像の表示
plt.show()
どうですか?
みなさんも画像が表示されましたか?
まとめ
今回、matplotlibのshow()で画像が表示されない場合の対処方法をご紹介しました。
今回ご紹介した方法は2行のおまじない(設定の上書き)を行う方法をでご紹介しました。
しかし、この方法は毎回忘れずに2行のおまじないと書かないといけないというデメリットもあります。
毎回書くほうがめんどくくさいと思う方は、matplotlibをインストールしたフォルダの中にあるmatplotlibrcというファイルを探して、backendの箇所を「TkAgg」に書き換えて下さい。
そうすると毎回おまじないを書かなくてもよくなります。
尚、2行のおまじないを実行するとwarningが表示される人がいると思いますが、Errorでは無くwarningなので気にしなく大丈夫です。