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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

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

Python

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

PyCharm

エディター・開発ツール

Q&A

解決済

opencvと用いて画像をグレー色に変更して表示したいのですがうまくいきません。

Limils
Limils

総合スコア2

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

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

Python

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

PyCharm

エディター・開発ツール

1回答

0グッド

0クリップ

323閲覧

投稿2023/01/15 06:53

編集2023/01/15 09:14

プログラミング勉強中の初心者です。
Pycharmでopencvを利用して画像の色を変更したいのですが上手くいきません。
パス、ディレクトリまわりが原因・解決策なのはわかりましたが調べて学ぼうとするとわからなくて頭がごちゃごちゃして訳がわからなくなります。
やり方を詳しく教えてください。

実現したいこと

PCの'C:¥Users¥ユーザー名¥Downloads¥cat.jpg'
にある画像をグレーに変更して表示したい

###エラーメッセージ
cv2.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

該当のソースコード

import cv2

img_BGR = cv2.imread("○○○") # 画像の読み込み
img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY) # 画像の色変換
cv2.imshow('img_test', img_GRAY) # 画像の表示
cv2.waitKey(0)

試したこと

・imread()内、○○○のところに画像の絶対パス、相対パスを入れて実行→失敗
・使用ツール等のアプデ確認、更新
・類似の画像表示コードでのトライ
・コメントアウトを試したところ画像の読み込みまでは上手くいっている
→ファイルはNone判定
・パスの記述や画像を別のものに変更して試す→ダメ

補足情報

・windows10
・python、pycharmインストール済み
・Imreadの行より下の行をコメントアウトで消した場合はエラーを吐かず実行できました。

###None判定に使用したコード import cv2 # OpenCVで画像ファイルを開く img = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED) if img is None: print("Load Error") else: cv2.imshow("Image", img) cv2.waitKey(0) ↑を画像ファイルのパスを用いて試した場合None判定がでました。

初歩的な質問ですがよろしくお願いします。

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

TakaiY

2023/01/15 06:59

> 画像の読み込みまでは上手くいっている→ファイルはNone判定 のところをもう少し具体的に書いていただけますか。 読み込めていると判断した理由。 「ファイルはNone判定」の具体的な内容。
Limils

2023/01/15 07:05

コメントありがとうございます。 ・Imreadの行より下の行をコメントアウトで消した場合はエラーを吐かず実行できました。 ###None判定に使用したコード import cv2 # OpenCVで画像ファイルを開く img = cv2.imread("image.bmp", cv2.IMREAD_UNCHANGED) if img is None: print("Load Error") else: cv2.imshow("Image", img) cv2.waitKey(0) ↑を画像ファイルのパスを用いて試した場合None判定がでました。 よろしくお願いします。
PondVillege

2023/01/15 08:50

> imread()内、○○○のところに画像の絶対パス、相対パスを入れて実行→失敗 escape sequenceが働いてたりしませんか? パスをprint文で表示して正しくなっているか確認するなり, import os print(os.path.exists('image.bmp')) でファイルが存在するかどうか調べるなりする必要があります. また, https://imagingsolution.net/program/python/opencv-python/imread_image_fail/ このサイトでも示されている通り,opencvで全角のあるファイルパスは扱えないようです.この場合,os.path.exists()はTrueになるけど,cv2.imread()はNoneを返すことになり,原因の切り分けが可能です.
TakaiY

2023/01/15 09:07

ここは質問に対するコメントを書く場所です。 コメントを受けた回答は基本的に質問を編集して追記するなどしたほうがいいですね。 特にコードはここでは 読めませんので。
Limils

2023/01/15 09:16

ありがとうございます 追記する際は以後気をつけます

回答1

0

ベストアンサー

Imreadの行より下の行をコメントアウトで消した場合はエラーを吐かず実行できました。

とありますが、 ドキュメントにあるように、imreadは読めなくてもエラーを吐かずに、Noneを返します。

https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga461f9ac09887e47797a54567df3b8b63

The function imread loads an image from the specified file and returns it. If the image cannot be read (because of missing file, improper permissions, unsupported or invalid format), the function returns an empty matrix ( Mat::data==NULL ).

printするとNoneになっているということですから、ファイルが読み込めていないということです。

付いているコメントにあるように、読み込もうとしているファイルのパスが正しいか

  • 本当にそのパスに目的のファイルがあるのか
  • パス文字列等が正しい文字列になっているかどうか

を確認してみてください。

投稿2023/01/15 09:12

TakaiY

総合スコア10933

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Limils

2023/01/23 04:25

試しましたが結局うまく行かずバージョンまわりをいじったところいけました。 ありがとうございました。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

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

Python

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

PyCharm

エディター・開発ツール