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

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

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

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

Python

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

Q&A

解決済

3回答

2073閲覧

koopencvを用いた顔認証でどうしてうまくいかないのかわからないです!

退会済みユーザー

退会済みユーザー

総合スコア0

OpenCV

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

Python

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

1グッド

0クリップ

投稿2018/08/05 10:22

編集2018/08/14 02:41

python

1//webカメラを使い、顔認識をして、顔を白枠で囲みたいです。 2 3import cv2 4import threading 5from datetime import datetime 6import numpy as np 7 8class FaceThread(threading.Thread): 9 def __init__(self, frame): 10 super(FaceThread, self).__init__() 11 self._cascade_path = r"C:\Users\saito\PycharmProjects\kenkyu\venv\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml" 12 self._frame = frame 13 14 def run(self): 15 16 self._frame_gray = cv2.cvtColor(self._frame, cv2.COLOR_BGR2GRAY) 17 18 19 self._cascade = cv2.CascadeClassifier(self._cascade_path) 20 21 22 self._facerect = self._cascade.detectMultiScale(self._frame_gray, scaleFactor=1, minNeighbors=2, minSize=(10, 10)) 23 24 25 if len(self._facerect) > 0: 26 print ('顔が検出されました。') 27 self._color = (255, 255, 255) #白 28 for self._rect in self._facerect: 29 30 cv2.rectangle(self._frame, tuple(self._rect[0:2]),tuple(self._rect[0:2] + self._rect[2:4]), self._color, thickness=2) 31 32 33 self._now = datetime.now().strftime('%Y%m%d%H%M%S') 34 35 self._image_path = self._now + '.jpg' 36 cv2.imwrite(self._image_path, self._frame) 37 38 39cap = cv2.VideoCapture(0) 40 41while True: 42 ret, frame = cap.read() 43 44 45 cv2.imshow('camera capture', frame) 46 47 if(threading.activeCount() == 1): 48 th = FaceThread(frame) 49 th.start() 50 51 52 k = cv2.waitKey(10) 53 54 if k == 27: 55 break 56 57cap.release() 58cv2.destroyAllWindows() 59```### opencv を利用した顔認証 60opencvとpythonを中心に使います。 61webカメラを使い、顔認識をして、顔を白枠で囲みたいです。 62webカメラは起動しているのですが、白枠で囲ってくれません。 63また、繰り返しエラーメッセージが出ている状態です。 64めっちゃ初心者なので、すごく簡単に説明していただけると嬉しいです。 65どうか、よろしくお願います。 66 67### 発生している問題・エラーメッセージ 68

File "C:/Users/saito/PycharmProjects/卒業研究/rensyuuuuuu.py", line 20, in run
self._facerect = self._cascade.detectMultiScale(self._frame_gray, scaleFactor=1, minNeighbors=2, minSize=(10, 10))
cv2.error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1698: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

milkteas👍を押しています

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

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

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

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

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

y_waiwai

2018/08/05 10:27

ソースコードは編集ボタン、<code>ボタンで、'''の枠に中にコピーしてください
退会済みユーザー

退会済みユーザー

2018/08/05 10:32

すみません。直しました!
milkteas

2018/08/08 09:23

タイトルはどういう内容か他の人がわかるような記述にしてください。
退会済みユーザー

退会済みユーザー

2018/08/08 09:52

訂正しました。
guest

回答3

0

ベストアンサー

File "C:/Users/saito/PycharmProjects/卒業研究/rensyuuuuuu.py", line 20, in run

Pythonのファイル名がWindows環境なのに
CascadeClassifierに渡している、Cascadeファイルのパスが(Unix環境かmac環境のパス記述です)

self._cascade_path = "/usr/local/opt/opencv/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"

opencvで日本語が含まれているパスを扱うのはお勧めしませんが
カスケードファイルのパスを正しくしてくださいな。


1,今回の問題と関係ないですが、以下の部分で新規スレッドを起動しています。
プログラム初心者の内は別スレッドを起動するのはスレッドに起因するトラブルを無駄に持ち込むだけなので、避けたほうがよいです。シングルスレッドでプログラムが正しく動作することを確認後に、ThreadPoolExecutorProcessPoolExecutorあとasyncioを使って並列化してくださいな。

Python

1 if(threading.activeCount() == 1): 2 th = FaceThread(frame) 3 th.start()

というかこのプログラム、threading.activeCount() == 1を判断しているので、
並列化されていないのでは・・・
k = cv2.waitKey(10)でキー入力をすぐに返した後、FaceThread#detectMultiScaleの処理に時間がかかれば、threading.activeCount()の値は2以上になる可能性があると思いますが。

2,ret, frame = cap.read()
動画が正しく読み込まれたかの戻り値retTrueかどうかを直後にif文で確認してください。


haarcascade_frontalface_altの探し方。

イメージ説明

クリップボードに以下のようなパスがコピーされるので、

"C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml"

文字列の先頭にrをつけて以下のように、質問文のコードを書き換えてください。

Python

1self._cascade_path = r"C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml"

1,MasahikoHirataさんも指摘されていますが、まず日本語パス「卒業研究」こういうのが含まれていないパスにする。

pythonopencvUnicodeパスに対応していないので、問題が起きやすいです。
2,スレッドを使うのをやめる。

Python

1 th = FaceThread(frame) 2 th.start()

3,上でも指摘しましたが、cap.read()の戻り値を判定する。

最後に質問文のコードはminSizeとパス部分を変えたならば、編集して最新のコードにしてくださいな。

投稿2018/08/05 10:59

編集2018/08/14 02:44
umyu

総合スコア5846

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

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

退会済みユーザー

退会済みユーザー

2018/08/05 12:52

回答ありがとうございます!カスケードファイルのパスってどこに書いてありますか?
umyu

2018/08/05 13:02

@saitodayoさんへ えと、その発言が出てくるということは多分、opencvを扱うのは初めてですよね。 opencv-pythonをpipでインストールしたならば、"の前にrをつけて以下のように r"pythonのインストールフォルダ\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml"
umyu

2018/08/05 13:03

haarcascade_frontalface_altでパソコンの中をファイル検索してみてください。多分それが一番はやいかと。
退会済みユーザー

退会済みユーザー

2018/08/08 09:16

ファイル検索したらありました!ですが、場所という欄にそれっぽいのがあったのでコピーしてコードのcascadefilepathの続きに貼ったら、usersのとこに赤い波線がでたりしてエラーでてきてしまいます。どうしたら良いですか?
umyu

2018/08/08 14:44

@saitodayoさんへ 質問文のコードを編集してくださいな。回答者はインターネット越しなので、質問文の内容を読んだだけで、該当の症状が分かるような書き方をしてくださいな。
umyu

2018/08/08 15:56

@saitodayoさんへ 回答内容を編集しました、この内容でわからない時は、パソコンに詳しいお友達にこの回答を見せて、設定してもらってください。
退会済みユーザー

退会済みユーザー

2018/08/14 02:35

丁寧な対応本当にありがとうございます! とてもわかりやすかったのですが、相変わらう同じエラーメッセージが出続けています。
退会済みユーザー

退会済みユーザー

2018/08/14 02:36

他にどんな対応をすれば良いかわかりますか?
guest

0

単純に’minSize=(10000, 10000)’がでかすぎるからでは?

'minSize=(10, 10)'に変えて試してみてください。

投稿2018/08/05 10:42

MasahikoHirata

総合スコア3747

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

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

退会済みユーザー

退会済みユーザー

2018/08/05 10:51

そこは間違えて記入しちゃってたところです!紛らわしくて、すみません! 実際は10、10でやってます!
MasahikoHirata

2018/08/05 10:59

では、’/usr/local/opt/opencv/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml’が存在しますか?
MasahikoHirata

2018/08/05 11:00

’Assertion failed’が出てますのでデータを疑うべきです。
MasahikoHirata

2018/08/05 11:02

umyu殿に同意。それとディレクトリー名には漢字は使わないほうが良いかと。
退会済みユーザー

退会済みユーザー

2018/08/08 09:20

’/usr/local/opt/opencv/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml’ってopencvをダウンロードすればついてくるものだと思っていたのですが、なにか新しくダウンロードするということですか?
guest

0

そこは間違えて記入しちゃってたところです!紛らわしくて、すみません!
実際は10、10でやってます!

投稿2018/08/05 10:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問