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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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

解決済

1回答

699閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

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

エディター・開発ツール

0グッド

0クリップ

投稿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判定がでました。

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

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

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

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

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

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

TakaiY

2023/01/15 06:59

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

退会済みユーザー

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

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

退会済みユーザー

2023/01/15 09:16

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

回答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

総合スコア12745

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

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

退会済みユーザー

退会済みユーザー

2023/01/23 04:25

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問