画像処理100本ノックを「Google Colaboratory」で楽々学習を利用して、画像処理100本ノックをやってみようということでColabを起動してTutorialの通りに打ち込んでみました。
import cv2
img = cv2.imread("imori.jpg")
cv2.imshow("imori", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
普通ならこれで画像が出るところですが、エラーが発生します。
---------------------------------------------------------------------------
DisabledFunctionError Traceback (most recent call last)
<ipython-input-14-d690a3c68444> in <module>()
----> 1 cv2.imshow("imori", img)
/usr/local/lib/python3.6/dist-packages/google/colab/_import_hooks/_cv2.py in wrapped(*args, **kwargs)
50 def wrapped(*args, **kwargs):
51 if not os.environ.get(env_var, False):
---> 52 raise DisabledFunctionError(message, name or func.__name__)
53 return func(*args, **kwargs)
54
DisabledFunctionError: cv2.imshow() is disabled in Colab, because it causes Jupyter sessions
to crash; see https://github.com/jupyter/notebook/issues/3935.
As a substitution, consider using
from google.colab.patches import cv2_imshow
エラーメッセージを読んでみるとcv2.imshow()
はjupyterセッションをクラッシュしてしまうそう。
ありがたいことにColab側がサポートパッチを提供してくれているので、これを使って解決させてみます。
#サポートパッチのインポート
from google.colab.patches import cv2_imshow
#画像のインポート
!curl -o logo.png https://colab.research.google.com/img/colab_favicon_256px.png
import cv2
img = cv2.imread('logo.png', cv2.IMREAD_UNCHANGED)
cv2_imshow(img)
僕の場合はimori.jpg
をcv2.imread()
で読み込んで、これで無事にイモリが表示されました。
ただこれはColabのパッチを使ってるのでもちろんJupyter Notebookではうまく動きません。
Jupyter Notebookは表示まではされるんですが,そもそもcv2.waitKey(0)
がうまく作動しなくてKernelごと死んじゃいます。
=============================================
2020/09/20 追記
Jupyterでは自前でimshow関数を用意してくれているようですので、こちらを参照されると良いかもしれません。