error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor’

Python

画像を読み込もうとしたら

img = cv2.imread(img_path)

読み込めませんというエラーが出ました。

OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

調べてみるとimg_path に指定した内容が間違っているから、という記事をよく見たのですが絶対パスを指定しているから大丈夫なはず。。。現にファイルは開けました。おかしいなーと思ってパスの中にある日本語を英語に変えるといけました。(パスの中に日本語が入ると読み取れない?フォルダ名を英語に変更しました)

「python imread 日本語」で検索した結果、同じようにハマっている人がいました。どうやらopencvはアスキー文字にしか対応していないそうです。imreadやimwriteを分解して処理してあげるとうまく動作するようになります。(まだ分解すると何が嬉しいのかは理解してない。。。)

参考

Python OpenCV の cv2.imread 及び cv2.imwrite で日本語を含むファイルパスを取り扱う際の問題への対処について - Qiita
https://qiita.com/SKYS/items/cbde3775e2143cad7455