質問編集履歴

1

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

2020/06/16 13:01

投稿

a_summer_days
a_summer_days

スコア6

test CHANGED
File without changes
test CHANGED
@@ -45,3 +45,107 @@
45
45
  #### そこで質問です。
46
46
 
47
47
  #### 顔を認識できているのにlen(facerect)やlen(dets)が0となる理由と解決策をご教示いただきたいです。
48
+
49
+
50
+
51
+ 追記:今回使用したプログラム全体です。(動画をフレーム分割し、各画像から顔を検出,顔を囲んだ画像を保存という流れです)
52
+
53
+ ```ここに言語を入力
54
+
55
+ import glob
56
+
57
+ import cv2
58
+
59
+ import os
60
+
61
+ import dlib
62
+
63
+ import csv
64
+
65
+ import matplotlib.pyplot as plt
66
+
67
+ import numpy as np
68
+
69
+ from PIL import Image, ImageDraw
70
+
71
+ %matplotlib inline
72
+
73
+ import pandas as pd
74
+
75
+ from pandas import DataFrame, Series
76
+
77
+
78
+
79
+ count=0
80
+
81
+
82
+
83
+ movie='パス.mov'#使用する動画 cap = cv2.VideoCapture(movie)
84
+
85
+
86
+
87
+ while True:
88
+
89
+ ret, img = cap.read()
90
+
91
+ if ret == True:
92
+
93
+ count += 1
94
+
95
+ cv2.imwrite('パス' + "Sample" + '_' + str("{0:05d}".format(count)) +'.jpg', img) #画像として保存する
96
+
97
+ else:
98
+
99
+ break
100
+
101
+
102
+
103
+ files = sorted(glob.glob(r"パス/*.jpg") )# .jpgを整理する
104
+
105
+
106
+
107
+ cascade = cv2.CascadeClassifier("パスhaarcascade_frontalface_default.xml")
108
+
109
+ facerect = cascade.detectMultiScale(img,minSize=(100,100))
110
+
111
+
112
+
113
+ count=0
114
+
115
+
116
+
117
+ if len(facerect) > 0:
118
+
119
+ for f in files:
120
+
121
+ count += 1
122
+
123
+
124
+
125
+ img = cv2.imread(f)
126
+
127
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
128
+
129
+
130
+
131
+ faces = cascade.detectMultiScale(gray, minSize=(100, 100))
132
+
133
+ for (x,y,w,h) in faces:
134
+
135
+ img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
136
+
137
+ roi_gray = gray[y:y+h, x:x+w]
138
+
139
+ roi_color = img[y:y+h, x:x+w]
140
+
141
+
142
+
143
+ cv2.imwrite('パス' + "Sample_after" + '_' + str("{0:05d}".format(count)) +'.jpg', img) #画像として保存する
144
+
145
+
146
+
147
+ cv2.waitKey(0)
148
+
149
+ cv2.destroyAllWindows()
150
+
151
+ ```