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

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

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

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

Q&A

0回答

2310閲覧

Python エラ (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale' ​

da_123

総合スコア3

Python

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

0グッド

0クリップ

投稿2020/07/27 03:07

編集2020/07/27 05:17

pythonを使ってwebカメラ上で、瞳の検出を行いたいのですが、グレー変換をする際にエラーが出てきます。昨日までエラー無くできていたので困っています。

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

python

1error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' 2

該当のソースコード

python

1 gray = cv2.cvtColor(rgb, cv2.COLOR_RGB2GRAY) 2 faces = face_cascade.detectMultiScale( 3 gray, scaleFactor=1.11, minNeighbors=3, minSize=(100, 100)) 4

全体のソースコード

python

1import os,sys 2import cv2 3import dlib 4from imutils import face_utils 5from scipy.spatial import distance 6 7 8 9cap = cv2.VideoCapture(0) 10face_cascade = cv2.CascadeClassifier('Users/User/Documents/eye/opencv-4.2.0/data/haarcascades/haarcascade_frontalface_alt2.xml') 11face_parts_detector = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') 12 13def calc_ear(eye): 14 A = distance.euclidean(eye[1], eye[5]) 15 B = distance.euclidean(eye[2], eye[4]) 16 C = distance.euclidean(eye[0], eye[3]) 17 eye_ear = (A + B) / (2.0 * C) 18 return round(eye_ear, 3) 19 20def eye_marker(face_mat, position): 21 for i, ((x, y)) in enumerate(position): 22 cv2.circle(face_mat, (x, y), 1, (255, 255, 255), -1) 23 cv2.putText(face_mat, str(i), (x + 2, y - 2), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (255, 255, 255), 1) 24 25while True: 26 tick = cv2.getTickCount() 27 28 ret, rgb = cap.read() 29 gray = cv2.cvtColor(rgb, cv2.COLOR_RGB2GRAY) 30 faces = face_cascade.detectMultiScale( 31 gray, scaleFactor=1.11, minNeighbors=3, minSize=(100, 100)) 32 33 if len(faces) == 1: 34 x, y, w, h = faces[0, :] 35 cv2.rectangle(rgb, (x, y), (x + w, y + h), (255, 0, 0), 2) 36 37 face_gray = gray[y :(y + h), x :(x + w)] 38 scale = 480 / h 39 face_gray_resized = cv2.resize(face_gray, dsize=None, fx=scale, fy=scale) 40 41 face = dlib.rectangle(0, 0, face_gray_resized.shape[1], face_gray_resized.shape[0]) 42 face_parts = face_parts_detector(face_gray_resized, face) 43 face_parts = face_utils.shape_to_np(face_parts) 44 45 left_eye = face_parts[42:48] 46 eye_marker(face_gray_resized, left_eye) 47 48 left_eye_ear = calc_ear(left_eye) 49 cv2.putText(rgb, "LEFT eye EAR:{} ".format(left_eye_ear), 50 (10, 100), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 1, cv2.LINE_AA) 51 52 right_eye = face_parts[36:42] 53 eye_marker(face_gray_resized, right_eye) 54 55 right_eye_ear = calc_ear(right_eye) 56 cv2.putText(rgb, "RIGHT eye EAR:{} ".format(round(right_eye_ear, 3)), 57 (10, 120), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 1, cv2.LINE_AA) 58 59 if (left_eye_ear + right_eye_ear) < 0.55: 60 cv2.putText(rgb,"close", 61 (10,180), cv2.FONT_HERSHEY_PLAIN, 3, (0,0,255), 3, 1) 62 63 cv2.imshow('frame_resize', face_gray_resized) 64 65 fps = cv2.getTickFrequency() / (cv2.getTickCount() - tick) 66 cv2.putText(rgb, "FPS:{} ".format(int(fps)), 67 (10, 50), cv2.FONT_HERSHEY_PLAIN, 2, (0, 0, 255), 2, cv2.LINE_AA) 68 69 cv2.imshow('frame', rgb) 70 if cv2.waitKey(1) == 27: 71 break # esc to quit 72 73cap.release() 74cv2.destroyAllWindows()

試したこと

opencvを新しくインストールし直した。

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

anaconda, jupyter notebookを使用

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

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

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

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

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

can110

2020/07/27 05:32

webカメラが別のプロセスで使用中の可能性があるので、マシンを再起動してみた結果を記載ください。
da_123

2020/07/27 05:52

再起動して実行してもエラーがでます。実行したら、webカメラは起動(青く点滅してる)しているもののカメラが表示されません。よろしくお願いします。
can110

2020/07/27 09:26 編集

周辺機器の追加、削除やソフトのインストールなど、昨日と比べてマシンに対して何か変更が加えられていないでしょうか? あとひとつ気になったのですが「webカメラは起動(青く点滅してる)している」状態は正常に動作しているということでしょうか(マニュアルに書いてあると思いますが)?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問