###前提・実現したいこと
https://qiita.com/hitomatagi/items/8f2f37646179aca68649
のコードを実行したいのですがエラーが出ます。
###発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-6-01ac271ef01b> in <module>() 23 #recognizer = cv2.createFisherFaceRecognizer() 24 # LBPH ---> 25 recognizer = cv2.createLBPHFaceRecognizer() 26 27 # 指定されたpath内の画像を取得 AttributeError: 'module' object has no attribute 'createLBPHFaceRecognizer'
全Facerecognizerを#した場合のエラーコードも追記します。
ValueError Traceback (most recent call last) <ipython-input-7-51c56ea4c8a7> in <module>() 57 58 # トレーニング画像を取得 ---> 59 images, labels, files = get_images_and_labels(train_path) 60 61 # トレーニング実施 <ipython-input-7-51c56ea4c8a7> in get_images_and_labels(path) 49 images.append(roi) 50 # ファイル名からラベルを取得 ---> 51 labels.append(int(f[7:9])) 52 # ファイル名を配列に格納 53 files.append(f) ValueError: invalid literal for int() with base 10: 'g' In [ ]:
###該当のソースコード
# -*- coding: utf-8 -*- import cv2, os import numpy as np from PIL import Image # トレーニング画像 train_path = 'C:/Users/wakimoto/testimg/trainning' #上のアドレスにはフォルダがあり「コンピュータ」でタグがつけてある # テスト画像 test_path = 'C:/Users/wakimoto/testimg/multi.jpg' # Haar-like特徴分類器 cascadePath = "C:/Users/wakimoto/Anaconda2/Library/etc/haarcascades/haarcascade_frontalface_default.xml" faceCascade = cv2.CascadeClassifier(cascadePath) # 顔認識器の構築 for OpenCV 2 # ※ OpenCV3ではFaceRecognizerはcv2.faceのモジュールになります # EigenFace #recognizer = cv2.face.createEigenFaceRecognizer() # FisherFace #recognizer = cv2.face.createFisherFaceRecognizer() # LBPH recognizer = cv2.face.createLBPHFaceRecognizer() # 指定されたpath内の画像を取得 def get_images_and_labels(path): # 画像を格納する配列 images = [] # ラベルを格納する配列 labels = [] # ファイル名を格納する配列 files = [] for f in os.listdir(path): # 画像のパス image_path = os.path.join(path, f) # グレースケールで画像を読み込む image_pil = Image.open(image_path).convert('L') # NumPyの配列に格納 image = np.array(image_pil, 'uint8') # Haar-like特徴分類器で顔を検知 faces = faceCascade.detectMultiScale(image) # 検出した顔画像の処理 for (x, y, w, h) in faces: # 顔を 200x200 サイズにリサイズ roi = cv2.resize(image[y: y + h, x: x + w], (200, 200), interpolation=cv2.INTER_LINEAR) # 画像を配列に格納 images.append(roi) # ファイル名からラベルを取得 labels.append(int(f[7:9])) # ファイル名を配列に格納 files.append(f) return images, labels, files # トレーニング画像を取得 images, labels, files = get_images_and_labels(train_path) # トレーニング実施 recognizer.train(images, np.array(labels)) # テスト画像を取得 test_images, test_labels, test_files = get_images_and_labels(test_path) i = 0 while i < len(test_labels): # テスト画像に対して予測実施 label, confidence = recognizer.predict(test_images[i]) # 予測結果をコンソール出力 print("Test Image: {}, Predicted Label: {}, Confidence: {}".format(test_files[i], label, confidence)) # テスト画像を表示 cv2.imshow("test image", test_images[i]) cv2.waitKey(300) i += 1 # 終了処理 cv2.destroyAllWindows()
###試したこと
さっきANaconda内のプログラムを確認したところ
と書いていました。
の場合こうなりました。
###補足情報(言語/FW/ツール等のバージョンなど)
python2.7 opencv3
回答1件
あなたの回答
tips
プレビュー