teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コード全体を追記しました

2020/06/16 13:01

投稿

a_summer_days
a_summer_days

スコア6

title CHANGED
File without changes
body CHANGED
@@ -21,4 +21,56 @@
21
21
  このコードについても同じ問題が発生しています。
22
22
 
23
23
  #### そこで質問です。
24
- #### 顔を認識できているのにlen(facerect)やlen(dets)が0となる理由と解決策をご教示いただきたいです。
24
+ #### 顔を認識できているのにlen(facerect)やlen(dets)が0となる理由と解決策をご教示いただきたいです。
25
+
26
+ 追記:今回使用したプログラム全体です。(動画をフレーム分割し、各画像から顔を検出,顔を囲んだ画像を保存という流れです)
27
+ ```ここに言語を入力
28
+ import glob
29
+ import cv2
30
+ import os
31
+ import dlib
32
+ import csv
33
+ import matplotlib.pyplot as plt
34
+ import numpy as np
35
+ from PIL import Image, ImageDraw
36
+ %matplotlib inline
37
+ import pandas as pd
38
+ from pandas import DataFrame, Series
39
+
40
+ count=0
41
+
42
+ movie='パス.mov'#使用する動画 cap = cv2.VideoCapture(movie)
43
+
44
+ while True:
45
+ ret, img = cap.read()
46
+ if ret == True:
47
+ count += 1
48
+ cv2.imwrite('パス' + "Sample" + '_' + str("{0:05d}".format(count)) +'.jpg', img) #画像として保存する
49
+ else:
50
+ break
51
+
52
+ files = sorted(glob.glob(r"パス/*.jpg") )# .jpgを整理する
53
+
54
+ cascade = cv2.CascadeClassifier("パスhaarcascade_frontalface_default.xml")
55
+ facerect = cascade.detectMultiScale(img,minSize=(100,100))
56
+
57
+ count=0
58
+
59
+ if len(facerect) > 0:
60
+ for f in files:
61
+ count += 1
62
+
63
+ img = cv2.imread(f)
64
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
65
+
66
+ faces = cascade.detectMultiScale(gray, minSize=(100, 100))
67
+ for (x,y,w,h) in faces:
68
+ img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
69
+ roi_gray = gray[y:y+h, x:x+w]
70
+ roi_color = img[y:y+h, x:x+w]
71
+
72
+ cv2.imwrite('パス' + "Sample_after" + '_' + str("{0:05d}".format(count)) +'.jpg', img) #画像として保存する
73
+
74
+ cv2.waitKey(0)
75
+ cv2.destroyAllWindows()
76
+ ```