実現したいこと
python初心者です。
初歩的な質問ですみません。
pythonで顔認識用のデータを集めるためのプログラムを作成しています。
opencvを用いた顔画像データの切り取りをする機能を実装中に以下のエラーメッセージが発生しました。
発生しているエラーメッセージ
File "face2.py", line 21, in <module> cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
該当のソースコード
python
1# -*- coding:utf-8 -*- 2import cv2 3import numpy as np 4 5# 集めてきた画像データのあるディレクトリ 6input_data_path = (r'C:/Users/python/img/ayami-nakajyo') 7# 切り抜いた画像の保存先ディレクトリ 8save_path = (r'C:/Users//python/img/cut-nakajyo') 9# OpenCVのデフォルトの分類器のpath。 10cascade_path = 'C:/Users/Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml' 11faceCascade = cv2.CascadeClassifier(cascade_path) 12 13# 収集した画像の枚数 14image_count = 106 15# 顔検知に成功した数 16face_detect_count = 0 17 18# 集めた画像データから顔が検知されたら、切り取り、保存する。 19for i in range(image_count): 20 img = cv2.imread(r'img_' + str(i) + '.jpg', cv2.IMREAD_COLOR) 21 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 22 face = faceCascade.detectMultiScale(gray, 1.1, 3) 23 if len(face) > 0: 24 for rect in face: 25 # cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0,255), thickness=1) 26 # cv2.imwrite('detected.jpg', img) 27 x = rect[0] 28 y = rect[1] 29 w = rect[2] 30 h = rect[3] 31 cv2.imwrite(save_path + 'cut' + str(face_detect_count) + '.jpg', img[y:y+h, x:x+w]) 32 face_detect_count = face_detect_count + 1 33 else: 34 print ('image' + str(i) + ':NoFace')
試したこと
カスケードファイルのパスを確認しましたが、パスの場所は間違っていませんでした。
読み込み画像のファイルの名前も確認しましたが、該当する名前(img_1.jpg、img_2.jpg…img_106.jpg)で存在しています。
windows環境はrow文字に直さないといけないとあったので、rを追加しましたが、相変わらず同じエラーが出力されます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/05 07:33