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

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

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

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

Python

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

Q&A

解決済

3回答

1755閲覧

cv2.imreadで読み込めない画像がある。

WAIMARU

総合スコア1

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/10/19 05:24

編集2021/10/19 06:21

前提・実現したいこと

初心者です。
OpenCVを使って画像を取り込み、縦の長さを測って表示する練習をしているのですが、
読み込める画像と読み込めない画像があります。
ネットで拾ってきたドラえもんのjpeg画像は読み込めて、Clip studioで描いてjpegで保存したイラストは読み込めませんでした。

発生している問題・エラーメッセージ

File "c:\Users\WAIWAI\Desktop\bunkatu\bunkatu.py", line 6, in <module> h,= img.shape[:1] AttributeError: 'NoneType' object has no attribute 'shape'

該当のソースコード

python

1import cv2 2import numpy as np 3 4img = cv2.imread('.\test.jpg') 5 6h= img.shape[:1] 7print("height = "+str(h))

試したこと

ファイルの名前を色々変えてみたり、他のクリスタで描いたイラストなども試しにやってみたが、イラストは全て読み込めなかった。

読み込めた画像

ネットでダウンロードした

読み込めなかった画像

クリスタで描いた
クリスタで描いた
クリスタで描いた、10px四方の小さい画像
クリスタで描いた
Windowsのペイントで描いた画像
ペイントで描いた

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

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

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

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

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

Bull

2021/10/19 05:39

こちらでも確認してみたいので、差し支えなければ、読み込めない画像を質問に貼り付けて頂けますか?
WAIMARU

2021/10/19 05:46

了解しました。
ppaul

2021/10/19 06:10

小さな画面に〇を一個書いてjpeg保存した画像で良いので、質問を編集して貼り付けてください。
jbpb0

2021/10/19 06:12

Windowsの標準アプリのペイントでちゃちゃっと何か描いてみて、それで同じ手順で読み込めるか確認してみたら、どうなりますでしょうか?
WAIMARU

2021/10/19 06:15

ppaul様 めちゃくちゃ小さい(容量が小さい)画像ということですね。わかりました。 jbpd0様 他のペイントアプリということですね。わかりました。
jbpb0

2021/10/19 06:24

ペイントで描いたjpegファイルを質問のコードで読み込めるかを、まずは確認してみてください
WAIMARU

2021/10/19 06:25

jbpb0様 ペイントで描いてjpegで保存した画像も読み込めませんでした。
jbpb0

2021/10/19 06:49 編集

> ペイントで描いてjpegで保存した画像も読み込めませんでした。 あれ?っと思って、当方のWin 10パソコンでやってみましたが、ちゃんと読み込めましたよ ペイントで適当に落書きして、メニューの  ファイル→名前を付けて保存→JPEG画像 を選んで、ファイル名に「無題.jpg」と書かれてるのをファイル名を半角英数字だけにして「保存」をクリックするだけなので、手順を間違えそうなところ無いのですが、質問者さんの環境では何で読み込めないのでしょうね??
WAIMARU

2021/10/19 06:47

jbpb0様 本当に申し訳ありません。ファイルの位置が違っているという初歩的なミスでした。 丁寧な対応ありがとうございます。今後はもっと確認してから質問します
guest

回答3

0

ベストアンサー

Pythonのcv2でも普通に読み込めました。

保存しているフォルダかファイル名の誤りではないでしょうか。

投稿2021/10/19 06:32

ppaul

総合スコア24670

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

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

WAIMARU

2021/10/19 06:34

名前は間違っていませんでしたが、ファイルが間違ってました。 解決しました。
guest

0

C++ でのテストとなりますが,
OpenCV 3.2.0, OpenCV 4.1.1 で

読み込めなかった画像

は,普通に読み込めました.
(ファイルタイトルは適当に "ReadTest" にリネームしましたが)

C++

1int main() 2{//読み込んで表示してみるだけのコード.無事に表示された. 3 cv::Mat Src = cv::imread( "ReadTest.jpeg" ); 4 if( Src.empty() )return 0; 5 cv::imshow( "Test", Src ); 6 cv::waitKey(); 7 return 0; 8}

単純にファイル名のミスだということは無いのでしょうか?
(拡張子が "jpeg" という4文字になっているところを,"jpg" と書いているとかそういう)

投稿2021/10/19 06:19

fana

総合スコア11996

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

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

WAIMARU

2021/10/19 06:29

回答ありがとうございます。 他の言語だといけるんですね。なぜだろう・・・ 画像の名前は.jpgで保存してあったので表記ゆれはないと思います。(一応.jpegでもやってみたがだめだった。)
guest

0

まずh,という変数名が気になりますね。hでいいと思います。
高さのみを知りたいのでしたらおそらくimg.shape[0]でいいと思いますよ。
スライスで表記する場合はタプルで複数の値が欲しい時ですね。

投稿2021/10/19 05:33

hoku

総合スコア3

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

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

WAIMARU

2021/10/19 05:46

hの後の,はミスです。すみません。 アドバイスありがとうございます。 きれいなコードを書けるよう練習したいです。 とりあえずはimreadで読み込めない画像と読み込める画像の違いが知りたいです。
hoku

2021/10/19 05:49

主な原因としては、ファイル名に日本語など全角文字が入っているとエラーになってしまいます。
WAIMARU

2021/10/19 05:53

全て小文字の英語で保存してみましたが、ダメでした。 読み込めた画像と読み込めなかった画像を貼りました。
hoku

2021/10/19 05:56

あと可能性があるとすれば、画像のパスですかね。。 .//となっていますが、./の間違いですか?
WAIMARU

2021/10/19 05:58

ドラえもんの画像はあの書き方でも読み込めて高さを出力できたので、コード以外に要因があると思っています。 アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問