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

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

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

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

Python

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

Q&A

解決済

1回答

1387閲覧

Pythonでわからないエラーが出ました。

k.nirasawa

総合スコア8

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/09/01 01:38

import numpy as np import cv2 import matplotlib.pyplot as plt #列の数を設定します NUM_COLUMNS=4 #行 ROWS_COUNT=len(fake_images)%NUM_COLUMNS #列 COLUMS_COUNT=NUM_COLUMNS #グラフオブジェクト保存用 subfig=[] #figureオブジェクト作成サイズを決めます fig=plt.figure(figsize=(12,9)) # for i in range(1,len(fake_images)+1): #順序i番目のsubfig追加 subfig.append(fig.add_subplot(ROWS_COUNT,COLUMS_COUNT,i)) img_bgr=cv2.imread('fake_images/'+str(i-1)+'.jpg') img_rgb=cv2.cvtColor(img_bgr,cv2.COLOR_BGR2RGB) subfig[i-1].imshow(img_rgb) #グラフ間の横と縦の隙間の調整 fig.subplots_adjust(wspace=0.3,hspace=0.3) plt.show() error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

なぜこのエラーが出るのかわかりません

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

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

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

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

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

1T2R3M4

2021/09/01 01:43

!_src.empty() と書いてありますよ。
meg_

2021/09/01 01:43

ファイルは読み込めていますか?(img_bgrに値は入っていますか?)
guest

回答1

0

ベストアンサー

img_bgr=cv2.imread('fake_images/'+str(i-1)+'.jpg')

で読み込みが失敗しています。

cv2は読み込みが失敗した場合にはエラーを出さずにNoneを返します。
Noneの色変換をしようとするとこのエラーが出ます。

可能性としては、カレントディレクトリにfake_imagesというサブディレクトリがないか、
カレントディレクトリのfake_imagesというサブディレクトリに'0.jpg'などのファイルがないかのどちらかです。

以下を実行して、カレントディレクトリを確認しましょう。

python

1import os 2print(os.getcwd())

投稿2021/09/01 01:48

ppaul

総合スコア24666

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

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

k.nirasawa

2021/09/01 03:09

/content と表示されたのですが、これはどういう意味でしょうか?
k.nirasawa

2021/09/01 03:13

fake_imagesに0.jpg,1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg があることがわかっています。
ppaul

2021/09/01 05:12

これはどういう意味でしょうか? カレントディレクトリが/contentだという意味です。 fake_imagesというディレクトリを丸ごと/contentの下にコピーするか移動してから、もう一度元のコードを実行してみてください。
k.nirasawa

2021/09/02 03:16

元のコードとは、僕が質問したコードということでしょうか?
jbpb0

2021/09/05 06:14 編集

> 元のコードとは、僕が質問したコードということでしょうか? そうです 「/content/fake_images」に画像ファイルがあれば、質問のコードそのままで読めるはず
k.nirasawa

2021/09/05 08:05

わかりました。 fake_imagesというディレクトリを丸ごと/contentの下にコピーするか移動するというのはコードに、「/content/fake_images」と入力するということでしょうか?
jbpb0

2021/09/05 08:23

> fake_imagesというディレクトリを丸ごと/contentの下にコピーするか移動するというのはコードに、「/content/fake_images」と入力するということでしょうか? 違います 画像ファイルが置いてある「fake_images」というディレクトリを、OS上で「/content」にコピーまたは移動させる、という意味です OS上でとは、たとえばWindowsならエクスプローラーを使って、Macならファインダーを使って、ディレクトリを操作するということです Pythonを動かしてるパソコンのOSは何ですか?
jbpb0

2021/09/06 04:33

Windowsならば、 print(os.getcwd()) の結果は「C:\」で始まるはずですが、実際は > /content でしたよね?? 本当にWindowsパソコン上でPythonを動かしてるのですか? 質問者さんが使ってるのはWindwsパソコンだけど、実際にPythonが動いてるのは別のコンピュータ上(たとえばGoogl Colab)ではないですか?
k.nirasawa

2021/09/07 03:25

申し訳ありません。Googl Colabでした。
jbpb0

2021/09/08 02:10 編集

「fake_images」はどこにあるのですか? Google Colab上ですか? Windowsパソコン側ですか? もしWindowsパソコン側にあるのなら、Google Colabではそこのファイルを読むことはできないので、「fake_images」をGoogle Colabにアップロードする必要があります
k.nirasawa

2021/09/08 07:00

パソコン側にはなかったので、Google Colabにあると思います。
jbpb0

2021/09/08 07:07

> Google Colabにあると思います。 Google Colab上にあるなら、それをGoogle Colabの「/content」直下に移動させてください 「/content」直下に「fake_images」があり、その中に画像ファイルがあり、Google Colabでコードを実行するときのカレントディレクトリが「/content」にあれば、質問のコードのままで画像ファイルが読めるはず
k.nirasawa

2021/09/08 07:20

「fake_images」を「/content」直下に移動するやり方がわかりません。 何も知らず申し訳ありません。
jbpb0

2021/09/08 07:41

「fake_images」が、今Google Colab上のどこにあるかを把握してますか?
k.nirasawa

2021/09/09 01:34

把握しておりません。 確認する方法はありますでしょうか?
jbpb0

2021/09/09 03:13 編集

> fake_imagesに0.jpg,1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg があることがわかっています。 って書いてますよね 「fake_images」がどこにあるのか分からないのに、何でそこに画像ファイルがあることが分かるのですか? Google Colabの左の「ファイル」アイコン https://wagtail.cds.tohoku.ac.jp/coda/python/images/google-colab-runtime-files-rev2.png をクリックしたら、ディレクトリやファイルを確認できる窓が出てきます そこから探したら、本当にGoogle Colab上のどこかにあるのなら、見つかるでしょう 「fake_images」って、本当に存在してるのですか? それを作ったはずの質問者さんが、どこにあるのか分からないって状況が、私には理解できません 【追記】 もしかしたら、 https://teratail.com/questions/355381 のコードを過去にGoogle Colabで実行したから、その時にできた画像ファイルが残っているはず、ということですか?
k.nirasawa

2021/09/10 03:34

fale_imagesを確認できました。見たところ、すでにcontentの中にあるみたいなのですが、 ⇓content ⇓fake_images
k.nirasawa

2021/09/10 03:35

しかしfake_imagesの中には何も入っていませんでした。
jbpb0

2021/09/10 04:06 編集

> fake_imagesに0.jpg,1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg があることがわかっています。 が間違いだった、ということですか? 画像が無ければ読めるはずないですけど
jbpb0

2021/09/10 04:10

> fake_imagesの中には何も入っていませんでした。 ppaulさんの回答の 「カレントディレクトリのfake_imagesというサブディレクトリに'0.jpg'などのファイルがない」 が正解ですね
k.nirasawa

2021/09/12 03:27

ということは、0.jpg,1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpgが入っているのはfake_imagesではないということでしょうか?
k.nirasawa

2021/09/12 03:40

ls fake_images →0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg こうなったのでfake_imagesに入っていると思ったのですが、
jbpb0

2021/09/18 08:51 編集

> ls fake_images →0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg こうなった それを実行したのはいつですか? 今日ですか?
k.nirasawa

2021/09/13 03:20

昨日です ls fake_images でちゃんと結果が出たのですが、それは実行したとは言えないのでしょうか??
jbpb0

2021/09/18 08:49 編集

> ls fake_images →0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg こうなった ならば、その時にGoogle Colab画面の左のディレクトリとかファイルとかが表示される窓で確認しても「fake_images」の中に画像ファイルがあるはずだし、質問のコードを走らせたら画像ファイルが読み込めるはずです それはどうだったのでしょうか? そこらへんも同時に確認してください
jbpb0

2021/09/13 04:50

Pythonコードの最初に、下記を追加してください import os さらに、forループ内の img_bgr=cv2.imread('fake_images/'+str(i-1)+'.jpg') のすぐ上に、インデントを上記行に合わせて下記を追加して、実行してみてください print(os.listdir('fake_images/')) print(os.path.abspath('fake_images/'+str(i-1)+'.jpg')) そうしたら、forループの繰り返しの毎回で、 ・「fake_images」の中にその時に実際に存在してる全部のファイル名 ・「cv2.imread()」で指定されてるファイル名の絶対パス が表示されますので、それらに矛盾が無いかを確認してください 画像ファイルが実際に存在していて、「cv2.imread()」で指定されてるファイル名の絶対パスが画像ファイルの本当の絶対パスと一致してれば、「cv2.imread()」で画像ファイルが読み込めるはずで、質問に書いてるようなエラーは出ないはずです エラーが出るなら、どこかに矛盾があるはずなので、それを見つけてください
k.nirasawa

2021/09/14 03:22

その時にGoogle Colab画面の左のディレクトリとかファイルとかが表示される窓で確認 >確認しましたが、画像を確認できませんでした。
k.nirasawa

2021/09/14 03:27

コードを追加して、実行してみたところ /content/fake_images/0.jpg と表示されたのですが、これはfake_imagesには0.jpgしかないということでしょうか?
jbpb0

2021/09/18 08:52 編集

>> その時にGoogle Colab画面の左のディレクトリとかファイルとかが表示される窓で確認 > 確認しましたが、画像を確認できませんでした。 今 !ls fake_images を実行したら、どうなりますか?
k.nirasawa

2021/09/14 03:57

結果が変わり、 何も表示されなくなりました。 これはどういうことなのでしょうか??
jbpb0

2021/09/18 08:52 編集

> 何も表示されなくなりました。 これはどういうことなのでしょうか?? !ls fake_images を実行して何も表示されないのなら、そこにはファイルが無いということです 繰り返しますが、ファイルが無ければ、エラーが出て当然です この質問の > なぜこのエラーが出るのかわかりません の回答は、「必要な画像ファイルが無いから」です 質問の回答が分かったのだから、このppaulさんの回答をベストアンサーにして、質問を終わらせましょう
jbpb0

2021/09/18 08:52 編集

> コードを追加して、実行してみたところ 「fake_images」ディレクトリ内に 0.jpg 1.jpg 2.jpg があるとします また、質問のコードの実行の前に、リスト「fake_images」には [0,1,2] が代入されてるとします なお、リスト「fake_images」は、「fake_images」ディレクトリとは無関係です (たまたま名前が同じだけ) その状態で実行したら、下記のように表示されます ['1.jpg', '0.jpg', '2.jpg'] /content/fake_images/0.jpg ['1.jpg', '0.jpg', '2.jpg'] /content/fake_images/1.jpg ['1.jpg', '0.jpg', '2.jpg'] /content/fake_images/2.jpg 3回表示されてる「['1.jpg', '0.jpg', '2.jpg']」は、「fake_images」ディレクトリ内に本当にその名前のファイルが存在してることを示してます この表示が重要です また、「/content/fake_images/*.jpg」は、「cv2.imread()」で読もうとしてる(コードで指定されてる)ファイル名で、本当にそのファイルが存在してるかどうかとは関係ありません > /content/fake_images/0.jpg と表示された それしか表示されなかったのなら、「fake_images」ディレクトリ内にファイルが一つも無いということです !ls fake_images で何も無いのなら、当然ですけど
k.nirasawa

2021/09/15 04:23

ご丁寧にありがとうございます。 ディレクトリ内にファイルが作れていないということはどのような原因があるのでしょうか?
jbpb0

2021/09/15 05:52 編集

> ディレクトリ内にファイルが作れていないということはどのような原因があるのでしょうか? そんなこと、そのディレクトリにどうやってファイルを置いた(つもりな)のか、とかの情報が全く無いのに、他人が分かるわけないでしょう そのディレクトリに必要なファイルをどうやって置くのか、という話はこの質問の範疇外だと思うので、それを質問したいなら別の質問を作ってください この質問は、「ファイルが存在しない」ということが判明した時点で解決してるのだから、この質問に質問をいつまでも重ねてズルズル引き延ばすのは、止めましょう この回答をベストアンサーにして、質問を終わらせてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問