質問編集履歴
1
コード全体を追記しました
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
|
+
```
|