前提・実現したいこと
現在フォルダ内の画像から顔を認識し、切り取り顔画像を生成するといったプログラムを使って顔画像生成を行なっているのですが、同じ画像をなんども生成し、その後に以下のようなエラーメッセージが表示されてしまいます。初心者で独学のため、どなたかご教示お願い致します
発生している問題・エラーメッセージ
エラーメッセージ Traceback (most recent call last): File "face_cut.py", line 58, in <module> face_detect(images) File "face_cut.py", line 47, in face_detect face_img = cv2.resize(dst_img, (64,64)) cv2.error: OpenCV(3.4.5) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/resize.cpp:3784: error: (-215:Assertion failed) !ssize.empty() in function 'resize'
該当のソースコード
python
1import glob 2import dlib 3import cv2 4 5候補画像を格納したディレクトリパス 6IMG_PATH = "ディレクトリパス" 7 8def face_detect(img_list): 9 10 11 12 顔領域を検出する識別器呼び出し 13 detector = dlib.get_frontal_face_detector() 14 15 候補画像を識別器にかけて座標情報を取得 16 for img_path in img_list: 17 18 トリミング用候補画像(カラーモード) 19 img = cv2.imread(img_path, cv2.IMREAD_COLOR) 20 21 画像配列を組み直して識別器に入力、顔領域と思われる座標情報取得 22 cv_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 23 faces = detector(cv_img, 1) 24 25 顔領域を検出すれば顔画像生成 26 img_count = 1 27 for face in faces: 28 29 候補画像サイズ取得 30 height, width = img.shape[:2] 31 32 顔領域の座標点取得 33 top = face.top() 34 bottom = face.bottom() 35 left = face.left() 36 right = face.right() 37 38 イレギュラーな顔領域は無視 39 if not top < 0 and left < 0 and bottom > height and right > width: 40 break 41 else: 42 顔領域トリミング 43 dst_img = img[top:bottom, left:right] 44 45 顔画像サイズ正規化して保存 46 face_img = cv2.resize(dst_img, (64,64)) 47 new_img_name = str(img_count) + '.jpg' 48 cv2.imwrite(new_img_name, face_img) 49 img_count += 1 50 print(new_img_name) 51 52 53if __name__ == '__main__': 54 55 指定ディレクトリより候補画像を取得、API等を用いて顔画像生成 56 images = glob.glob(IMG_PATH + '*.jpg') 57 face_detect(images) 58 59### 試したこと 60 61ここに問題に対して試したことを記載してください。 62 63### 補足情報(FW/ツールのバージョンなど) 64Python 3.7.1 65OpenCV(3.4.5) 66dlib 19.16
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
Python 3.7.1
OpenCV(3.4.5)
dlib 19.16
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/31 05:20
2018/12/31 21:49 編集
2019/01/14 22:02