0
0

[Windows / Python / OpenCV] ちゃんとファイルが存在するのに cv::findDecoder imread_ ... : can't open/read file: check file path/integrity が出たとき

Last updated at Posted at 2024-08-12

概要

  • opencv を使っていて、表題のエラーが発生した。
  • 画像ファイル自体は確実に存在していることを確認したのに、エラー文には、ファイルが開けないようと書かれている。
  • 原因がわからなくて困っていたが、なんとか原因を特定できたので共有する。

環境

項目 versionなど
OS Windows10
python 3.8.10 (pyenv-win でインストール)
opencv-python 4.6.0.66
terminal GitBash, VSCode

GitBash 上で実行したときも、VSCode 上で実行したときも、全く同じエラーが発生していたので、おそらく Windows OS 上で cv2.imread() を実行すると同様の事象が発生すると思われる。

解決方法概要

  • 開きたいファイルの名前(path 含む)を、半角の英数記号のみにすればよい。

エラー発生状況

cv2 で、日本語名のついた画像ファイルを読み込もうとしたら以下のようなエラーが発生していた。

powershell
> python
>>> import cv2
>>> path: str = "C:\\Users\\...\\日本語ファイル.jpg"
>>> im = cv2.imread(path)
[ WARN:0@270.836] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('C:\Users\...\日本語ファイル.jpg'): can't open/read file: check file path/integrity

試しに raw 文字列を渡しても同じ結果になった。

powershell
>>> path: str = r"C:\Users\...\日本語ファイル.jpg"
>>> im = cv2.imread(path)
[ WARN:0@270.836] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('C:\Users\...\日本語ファイル.jpg'): can't open/read file: check file path/integrity

解決方法

ファイル名を日本語から英数字のみの名前に書き換えてあげたら、何事もなく読み込まれた。

まず、ファイル名を depicted.jpg に書き換えておいた。そして以下を実行( ˙︶˙)وグッ!

powershell
>>> path: str = r"C:\Users\...\depicted.jpg"
>>> im = cv2.imread(r"C:\Users\...\depicted.jpg")
>>> im
array([[[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...

そしたら読み込めた。。。

参考

以下の記事には、 opencv だと読み込めないと書いてあるけれど、 Ubuntu であれば読み込めていたので、 windows 特有の問題のような気がする🤔

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0