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

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

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

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

2588閲覧

pythonで顔を認識した瞬間プログラムが終了する。

meJ15

総合スコア55

dlib

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

1グッド

0クリップ

投稿2019/04/11 09:40

前提・実現したいこと

PythonでdlibとOpenCVを用いてHelen datasetを学習して顔器官検出
このページ最後の認識のプログラムを実行すると顔が認識した瞬間エラーがでて止まってしまいます。

参考サイトの学習済みモデルhelen-dataset.datをダウンロードして、predictorとして読み込みをしています。
顔認識をした瞬間に止まってしまうので、predictorに問題があると考えています。
エラーメッセージが'str' object is not callableとなっており、helen-dataset.datのなかにエラー原因のstrがあるのでしょうか?

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

TypeError Traceback (most recent call last) <ipython-input-2-bb9c0dbc2bdd> in <module> 64 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 65 ---> 66 landmarks = facemark(gray) 67 68 for landmark in landmarks: <ipython-input-2-bb9c0dbc2bdd> in facemark(gray_img) 53 landmarks.append( 54 numpy.array( ---> 55 [[p.x, p.y] for p in predictor(gray_img, rect).parts()]) 56 ) 57 return landmarks TypeError: 'str' object is not callable

該当のソースコード

import cv2 import dlib import numpy import os predictor ='helen-dataset.dat' face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') def face_position(gray_img): """Detect faces position Return: faces: faces position list (x, y, w, h) """ faces = face_cascade.detectMultiScale(gray_img, minSize=(100, 100)) return faces def facemark(gray_img): faces_roi = face_position(gray_img) landmarks = [] for face in faces_roi: x, y, w, h = face face_img = gray_img[y: y + h, x: x + w]; detector = dlib.get_frontal_face_detector() rects = detector(gray_img, 1) landmarks = [] for rect in rects: landmarks.append( numpy.array( [[p.x, p.y] for p in predictor(gray_img, rect).parts()]) ) return landmarks if __name__ == '__main__': cap = cv2.VideoCapture(0) while cap.isOpened(): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) landmarks = facemark(gray) for landmark in landmarks: for points in landmark: cv2.drawMarker(frame, (points[0], points[1]), (21, 255, 12)) cv2.imshow("video frame", frame) if cv2.waitKey(25) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()

試したこと

def facemark(gray_img):のなかの

for rect in rects: landmarks.append( numpy.array( [[p.x, p.y] for p in predictor(gray_img, rect).parts()]) )

部分をコメントアウトすると顔が映っても動作し続けることを確認しました。

そのため、コメントアウトした

for rect in rects: landmarks.append( numpy.array( [[p.x, p.y] for p in predictor(gray_img, rect).parts()]) )

ここのpredictor に問題があると考えていますが、同じような経験された方はいませんか?

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

python3.6.8
windows
jupyter notebook

dotnetuseryamag👍を押しています

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

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

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

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

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

t_obara

2019/04/11 10:11

predictor ='helen-dataset.dat' この行の意味は?
guest

回答1

0

ベストアンサー

ソースコード冒頭で
predictor ='helen-dataset.dat'
と記入しており、関数名と被ってしまってます。
これだとエラーコード通りにstrを実行しようとしています。
参考サイト通りに修正してみてください。

投稿2019/04/11 10:09

編集2019/04/11 10:10
bsk

総合スコア174

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

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

meJ15

2019/04/11 11:05

あ、理解できました。今のままだとただの文字列ですね。 今の時点でパソコンがないので確認できないのですが、 predictor = dlib.shape_predictor('helen-dataset.dat') ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問