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

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

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

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

Python

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

Q&A

1回答

737閲覧

opencvについて勉強しています。エラーを解決をお願いします。

iwasif

総合スコア6

OpenCV

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

Python

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

0グッド

0クリップ

投稿2017/08/21 19:11

###前提・実現したいこと
opencvについて勉強中でhttp://qiita.com/hitomatagi/items/8f2f37646179aca68649にあるプログラムを動かしてみたいんですが知識がなくわかりません。

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

AttributeError: 'module' object has no attribute 'createLBPHFaceRecognizer'

###該当のソースコード

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4import cv2, os 5import numpy as np 6from PIL import Image 7 8# トレーニング画像 9train_path = './yalefaces' 10 11# テスト画像 12test_path = './test' 13 14# Haar-like特徴分類器 15cascadePath = "haarcascade_frontalface_default.xml" 16faceCascade = cv2.CascadeClassifier(cascadePath) 17 18# 顔認識器の構築 for OpenCV 2 19# LBPH 20recognizer = cv2.createLBPHFaceRecognizer() 21 22# 指定されたpath内の画像を取得 23def get_images_and_labels(path): 24 # 画像を格納する配列 25 images = [] 26 # ラベルを格納する配列 27 labels = [] 28 # ファイル名を格納する配列 29 files = [] 30 for f in os.listdir(path): 31 # 画像のパス 32 image_path = os.path.join(path, f) 33 # グレースケールで画像を読み込む 34 image_pil = Image.open(image_path).convert('L') 35 # NumPyの配列に格納 36 image = np.array(image_pil, 'uint8') 37 # Haar-like特徴分類器で顔を検知 38 faces = faceCascade.detectMultiScale(image) 39 # 検出した顔画像の処理 40 for (x, y, w, h) in faces: 41 # 顔を 200x200 サイズにリサイズ 42 roi = cv2.resize(image[y: y + h, x: x + w], (200, 200), interpolation=cv2.INTER_LINEAR) 43 # 画像を配列に格納 44 images.append(roi) 45 # ファイル名からラベルを取得 46 labels.append(int(f[7:9])) 47 # ファイル名を配列に格納 48 files.append(f) 49 50 return images, labels, files 51 52 53# トレーニング画像を取得 54images, labels, files = get_images_and_labels(train_path) 55 56# トレーニング実施 57recognizer.train(images, np.array(labels)) 58 59# テスト画像を取得 60test_images, test_labels, test_files = get_images_and_labels(test_path) 61 62i = 0 63while i < len(test_labels): 64 # テスト画像に対して予測実施 65 label, confidence = recognizer.predict(test_images[i]) 66 # 予測結果をコンソール出力 67 print("Test Image: {}, Predicted Label: {}, Confidence: {}".format(test_files[i], label, confidence)) 68 # テスト画像を表示 69 cv2.imshow("test image", test_images[i]) 70 cv2.waitKey(300) 71 72 i += 1 73 74# 終了処理 75cv2.destroyAllWindows()

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/08/21 22:28

使用中のpythonのバージョンやモジュールのバージョンが書いてあるとより条件が特定しやすくなります。
guest

回答1

0

■OpenCVのパッケージ構成
まず、OpenCVには、以下の2パッケージがあります。

  • 標準で入っている機能(基礎的なもの:わりと枯れた技術)
  • 「Contrib」と呼ばれる拡張パックに入っている機能(発展目覚ましい最新の技術)※要コンパイル

createLBPHFaceRecognizerの機能は、「Contrib」の中身だということが、OpenCV公式QAStackOverflowのQAにあります。

■エラーの内容
今回のエラー、AttributeError: 'module' object has no attribute 'createLBPHFaceRecognizer'は、まさにこのモジュールがないために'createLBPHFaceRecognizer'が使えない、と言っています。

■対策
先のOpenCV公式の中で、breakさんが3つの対策を挙げています。


私ならコンパイルが必要なのは別のマシンへの移植がめんどくさいので、別の実装を試しそうです。

投稿2017/08/21 22:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

iwasif

2017/08/22 04:59

opencv2.4に巻き戻して使うことにしたんですが今度は 'UnicodeDecodeError: 'ascii' codec can't decode byte 0x8e in position 10: ordinal not in range(128)' と出てきてしまいhttp://d.hatena.ne.jp/shu223/20111201/1328334689を参考にutf-8に変更をしたんですが同じエラーが出てしまいます。どうすればよいでしょうか
退会済みユーザー

退会済みユーザー

2017/08/22 10:29

そのエラーのすぐ上に「どのコードの何行目で」が書かれていませんか?それを出してもらえれば手伝えるかもしれません(手元のpythonと違うのでググるくらいしかできませんが...)
iwasif

2017/08/22 10:53

File "C:\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\IPython\core\ultratb.py", line 623, in _format_exception_only Colors.Normal, s)) そのエラーの上にこのように書かれていました 度々申し訳ありません
退会済みユーザー

退会済みユーザー

2017/08/22 12:27

Discussion: Erreur ascii lors de l'utilisation des quaternions [Python 2.X] クオータニオンを計算するのにpython2.7を使った方が似たようなエラーに遭遇していました。 https://www.developpez.net/forums/d1533957/autres-langages/python-zope/general-python/erreur-ascii-lors-l-utilisation-quaternions/ Dan737さんによれば、 ・トレースバック(エラーメッセージ)を見れば簡単さ!(どこが簡単なのか私にはo.0) ・私の見立てでは、あなたが見せているファイルまたはquaternion.py(iwasifさんの場合ultratb.py")がutf8で保存されていないから、確認してみてね だそうです。 あとは、 追伸: UTF-8は195と169の値を持つ2バイトでエンコードされます。 16進数で195は0xc3です。 IPythonは、ASCIIコードを使用して値195でバイトをデコードしようとしますが、ASCIIテーブルが127で停止するため、どの文字を使用するべきか理解できないのです。 だそうです。 ...よくわかりませんが、Dan737がuberhax0rなのは分かりました o.0
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問