質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

11103閲覧

!_src.empty() in function 'cvtColor'のエラー

rikezyo

総合スコア1

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/05 06:55

編集2021/11/05 08:00

pythonにてマルチラベル分類を行った際、下のようなエラーが出ました。

python

1cv2.error: OpenCV(4.5.3) /tmp/pip-req-build-s58vuwxh/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

このエラーの原因となるコードは

python

1 def __getitem__(self, index): 2 image = cv2.imread(f"../input/movie-classifier/Multi_Label_dataset/Images/{self.image_names[index]}.png") 3 4 # convert the image from BGR to RGB color format 5 image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) 6 7 # apply image transforms 8 image = self.transform(image) 9 targets = self.labels[index] 10 11 return { 12 'image': torch.tensor(image, dtype=torch.float32), 13 'label': torch.tensor(targets, dtype=torch.float32) 14 } 15

RGBに変換する際にエラーが出たと考えられます。
データセットにはグレースケール画像はないため,もともとRGBの画像が含まれていることが原因でエラーが出ているのでしょうか?
その際RGBの画像を見分ける方法を教えてくださると助かります。

ちなみに途中まで画像の読み込みはできているので一部の画像がエラーの原因になっていると思います。。。

python

1 def __getitem__(self, index): 2 image = cv2.imread(f"../input/movie-classifier/Multi_Label_dataset/Images/{self.image_names[index]}.png") 3 print(image.shape) 4 5 # convert the image from BGR to RGB color format 6 image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB) 7 8 # apply image transforms 9 image = self.transform(image) 10 targets = self.labels[index] 11 12 return { 13 'image': torch.tensor(image, dtype=torch.float32), 14 'label': torch.tensor(targets, dtype=torch.float32) 15 } 16

上のようにプリント文で書き出したところ、途中まで読み込めていましたが
途中で

python

1'NoneType' object has no attribute 'shape'

というエラーが出てました。
この画像を調べる方法を教えてくださると助かります。。

またフォルダ内のshapeを全て調べたところエラーは1枚も出ていないため、何枚か読み込みに失敗していると考えられるのですが、全ての画像が同フォルダ内にあるとき、エラーの原因は何でしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/11/05 07:59

何故正当な正否判定処理を頑なに設けないのですか? ふつーに結果をチェックして失敗と判定できたならば,そのときにimreadに与えたパス文字列を表示なりなんなりしてみたら良いのではないですか?
fana

2021/11/05 09:03

Why do you hate implementing cv2.imread result checking? Why do you refuse to identify the name of the file that failed to be read?
guest

回答2

0

_src.empty() in function 'cvtColor'

画像が読み込めていなくて、空っぽという意味です。
値をプリントしてみてください。

>>> image = cv2.imread('none.jpg') >>> print(image) None >>> im2 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) Traceback (most recent call last): File "<stdin>", line 1, in <module> cv2.error: OpenCV(4.5.3) color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

参考ですが、
cv2.imreadで画像が見つからないことはよくあります。
以下のようにtry-exceptでエラーチェックするのが良いでしょう。

try: img = cv2.imread(画像ファイル名) if img is None: raise FileNotFoundError('ファイルが見つかりません') except FileNotFoundError as e: print(e)

投稿2021/11/05 07:27

編集2021/11/05 09:56
technocore

総合スコア7337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

image = cv2.imread( ...

これが失敗しているだけの話ではないでしょうか.

というか,ファイル読込という処理は普通に失敗があり得るのだから,次の処理に進む前に読込成否のチェックを入れるべき.
→で,それで読込失敗となったときのファイルパスでも確認してみれば何かわかるのでは?

投稿2021/11/05 07:12

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問