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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

2回答

4124閲覧

opencv-pythonで画像の読み込みが行えない.

my__15

総合スコア12

OpenCV

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2021/12/07 05:21

前提・実現したいこと

こんにちは.最近になって機械学習を始めた者です.
小学校1年生が習う漢字を手書きでリアルタイム認識させるプログラムを作りたいと思っています.
そのためにまず手書きの漢字の画像で文字認識をさせたいと思っているのですが,そもそも画像を読み込むことができず,困っています.解決法を教えていただけると幸いです.

画像の読み込みについては,opencv-pythonを用いて行っています.

エラーメッセージは次の通りです.

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

Traceback (most recent call last): File "C:/charadata/chara.py", line 11, in <module> for image_name in os.listdir(path): FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: 'C:/charadatasets/ao\ao'

該当のソースコード

python

1import matplotlib.pyplot as plt 2import os 3import cv2 4 5DATADIR = "C:/charadatasets/ao" 6CATEGORIES = ["ao"] 7 8for category in CATEGORIES: 9 path = os.path.join(DATADIR, category) 10 11 for image_name in os.listdir(path): 12 img_array = cv2.imread(os.path.join(path,image_name),cv2.IMREAD_GRAYSCALE) 13 plt.imshow(img_array, cmap = "gray") 14 plt.show() 15 break 16 break 17 18print(img_array.shape) 19print(img_array) 20

試したこと

プログラムでは,青と書いてある画像を読み込もうとしています.初めはファイル名を青としていたのですが,半角英数でなけらばならないのかと思い,aoというローマ字に変換しました.しかしそれでも読み込むことができませんでした.
何か別の理由があるのだとは思うのですが,見当がつきません.

補足情報(FW/ツールのバージョンなど)

pyton 3.9.9

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

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

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

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

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

HRCo4

2021/12/09 06:20

> TypeError: Image data of dtype object cannot be converted to float float型への変換ができないというエラーです。 掲載されているコード上では変換を行っている部分が記載されていませんので、どう修正すればいいのかの指摘は難しいです。
my__15

2021/12/09 15:36

ご回答,ありがとうございます. 少々長くなってしまうのですが,試しているコードについて記載させていただきます.読んでいただけましたら幸いです. 今回のコードはMicrosoft社の犬と猫の画像データを画像出力するコードを参考にしています.長くなってしまいますが,念のためURLを添付いたします.(https://intellectual-curiosity.tokyo/2019/07/02/%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%8A%E3%83%AB%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9/) 【現在試しているコード】 import matplotlib.pyplot as plt import os import cv2 DATADIR = "C:/kanjidatasets/kanji" CATEGORIES = ["ao","dai","ki","ko","onnna","otoko","sora","syou","te","tenn"] for category in CATEGORIES: path = os.path.join(DATADIR, category) for image_name in os.listdir(path): img_array = cv2.imread(os.path.join(path,image_name),cv2.IMREAD_GRAYSCALE) plt.imshow(img_array, cmap = "gray") plt.show() break break print(img_array.shape) print(img_array) ※貼り付けた際にずれてしまいました.python上では正常です. サイトでは,犬と猫の画像データの収納場所をc://Datasets/PetImagesとしており,そのPetImagesの中にそれぞれ画像の入ったDogとCatのファイルがある形でした.私もそれに習ってc://kanjidatasets/kanjiとし,その中に漢字10文字分の10個のファイル(コード内の[]の部分)を作成しています. 犬と猫の画像データの方はサイト内のコードで実行することが出来ました.そのため,自作の漢字の画像も同じような保存方法であれば実行できると思ったのですが,エラーになってしまっているという状況です. 長々とすみません. よろしくお願い致します.
HRCo4

2021/12/09 16:32

今から確認してみますが、その前にpythonはインデントが重要なのでできればこちらではなく質問を修正してそちらにコードの記載をお願いします。 こちらだとMarkdownが使えないためどうしてもインデントがなくなってしまいますので。
guest

回答2

0

ベストアンサー

import matplotlib.pyplot as plt import os import cv2 DATADIR = "C:/charadatasets/" CATEGORIES = ["ao"] for category in CATEGORIES: path = os.path.join(DATADIR, category) for image_name in os.listdir(path): print(image_name) # 追加 img_array = cv2.imread(os.path.join(path,image_name),cv2.IMREAD_GRAYSCALE) plt.imshow(img_array, cmap = "gray") plt.show() break break print(img_array.shape) print(img_array)

これで一回実行してみてください。
os.listdirはファイル以外にディレクトリも検索かけてしまうのでimage_nameにファイルではなくディレクトリが代入されて、それをimreadしようとしているのではないでしょうか。
拡張子が決まっているとかであればos.listdirより、例えばglob.glob('C:/charadatasets/ao/*.png')みたいにした方がエラーの可能性を下げれます。

投稿2021/12/09 17:00

HRCo4

総合スコア140

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

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

my__15

2021/12/13 02:40

HRCo4様 ご回答ありがとうございます.返信が遅れてしまい申し訳ありません. まず,画像の名前が漢字のままであったことが判明しました. おそらくこれが正常に動かなかった原因だったのだと思います. 完全に確認不足でした.申し訳ありません. 画像の名前を変え,提供していただいたコードに書き換えたところ,正常に画像を表示することが出来ました. 以後細心の注意を払ってプログラミングを行いたいと思います. 自分の確認不足が原因にも関わらず,ここまでご回答いただき,本当にありがとうございました.
guest

0

ディレクトリ構成によりますが、

python

1DATADIR = "C:/charadatasets/ao"

python

1DATADIR = "C:/charadatasets/"

にすると動くかもしれません。

投稿2021/12/07 05:34

ppaul

総合スコア24670

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

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

my__15

2021/12/08 17:59

ご回答ありがとうございます. aoの部分を変えて実行してみたところ,以下のような質問内容とは別のエラーが出てしまいました. TypeError: Image data of dtype object cannot be converted to float teratail内で同じような質問をされていた方がいらっしゃったのですが,パスが間違っていたということで解決されていました. このプログラムで言えば,DATADIRやcategoryの部分に何か間違いがあるということなのでしょうか.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問