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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

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

Python

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

Q&A

解決済

1回答

1638閲覧

cv2.splitでのValueError

keita_kkk

総合スコア17

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/08/02 01:16

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
pythonで"ディープラーニングを使用して「あなたにそっくりな女優判別プログラム」を作ったおはなし"
リンク:https://qiita.com/k_eita/items/a50a4cae0aa2598422e4
というものを参考にしてシステムを作成しています。
「画像を使ってテスト」を実装中に以下のエラーメッセージが発生しました。

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

Using TensorFlow backend. 2021-08-02 09:52:06.373692: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 Traceback (most recent call last): File "c:/Users/Owner/Documents/anaconda_vs/appale_project/picture_test.py", line 83, in <module> b, g, r = cv2.split(image) ValueError: not enough values to unpack (expected 3, got 0)

該当のソースコード

python

1#画像を使ってテスト 2import sys 3import cv2 4import keras 5import numpy as np 6import matplotlib.pyplot as plt 7from PIL import Image 8from keras.models import Sequential, load_model 9from keras.layers import Conv2D, MaxPooling2D 10from keras.layers import Activation, Dropout, Flatten, Dense 11from keras.utils import plot_model 12from numpy.lib.shape_base import expand_dims 13from numpy.lib.type_check import imag 14 15#カテゴリ名 16category = ["maru", 17 "half", 18 "half4", 19 "half8", 20 "complete"] 21 22#読み込むモデル 23in_model = 'appale_model_15.h5' 24 25def defect_apple(image): 26 #リンゴ抽出 27 image_gs = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 28 cascade = cv2.CascadeClassifier('cascade_apple_all.xml') 29 #リンゴ認識の実行 30 apple_list = cascade.detectMultiScale(image_gs, scaleFactor = 1.1, minNeighbors = 2, minSize = (64, 64)) 31 32 #リンゴが1つ以上検出された 33 if len(apple_list) > 0: 34 for rect in apple_list: 35 x, y, width, height = rect 36 37 img = image[rect[1]: rect[1] + rect[3], rect[0]: rect[0] + rect[2]] 38 39 if image.shape[0] < 64: 40 print('エラー:リンゴが小さすぎて読み込めませんでした。') 41 continue 42 img = cv2.resize(image(60, 60)) #60*60にリサイズ 43 img = np.expand_dims(img, axis = 0) # 44 name = detect_whitch(img) 45 46 cv2.rectangle(image, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), (255, 0, 0), thickness = 3) 47 cv2.putText(image, name, (x, y + height + 20), cv2.FONT_HERSHY_DUPLEX, 1, (255, 0, 0), 2) 48 #顔が検出されなかった 49 else: 50 print('エラー:リンゴを検出出来ませんでした。') 51 return image 52 53def detect_whitch(face_image): 54 #結果を格納 55 result = model.predict(face_image)[0] 56 #一番可能性の高い配列の添え字を返す 57 predicted = result.argmax() 58 percentage = int(result[predicted] * 100) 59 #カテゴリ名と確率を表示 60 print('{0} ({1})%'.format(category[predicted], percentage)) 61 62 return category[predicted] 63 64try: 65 model = load_model('./' + in_model) 66except OSError: 67 print('エラー:./' + in_model + 'が見つかりません。') 68 exit() 69 70#コマンドラインの引数で与えられたパスの画像の確認 71if len(sys.argv) == 2: 72 try: 73 image = cv2.imread(sys.argv[1]) 74 except FileNotFoundError: 75 print('エラー:パスに指定された画像が見つかりませんでした。') 76 exit() 77elif len(sys.argv) > 2: 78 print('エラー:パスは1つだけ指定してください。') 79 exit() 80else: 81 print('エラー:コマンドラインの引数に画像のパスを設定してください。') 82 exit() 83 84b, g, r = cv2.split(image) 85image = cv2.merge([r, g, b]) 86image = defect_apple(image) 87 88plt.imshow(image) 89plt.show()

試したこと

・image.shapeでimageを調べる -->None
(imreadで失敗?)
・画像を変えて実行
・cv2.imshowで画像を表示させてみる -->失敗

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

・keras2.3.1
・matplotlib3.3.4
・opencv3.3.1
・python3.6,13
・anaconda3
・tensorflow2.1.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

cv2.imreadは、画像が存在しないために画像を読み込めなかった場合にエラーを送り出さずに戻り値としてNoneを返す、という仕様です。

従って、

python

1 try: 2 image = cv2.imread(sys.argv[1]) 3 except FileNotFoundError: 4 print('エラー:パスに指定された画像が見つかりませんでした。') 5 exit()

ではエラーを検出できません。

python

1 image = cv2.imread(sys.argv[1]) 2 if image == None: 3 print('エラー:パスに指定された画像が見つかりませんでした。') 4 exit()

に変更しましょう。

投稿2021/08/02 01:52

ppaul

総合スコア24670

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

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

keita_kkk

2021/08/02 02:09

回答ありがとうごさいます!早速やってみました。 しかし、画像を指定しているのですが見つかりません。 原因として考えられることはありますか?
ppaul

2021/08/02 04:06

カレントディレクトリにないのでしょう。 import os print(os.getcwd()) を入れて、カレントディレクトリの確認をして、そこに画像ファイルを置くか、さもなければフルパスで指定してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問