回答編集履歴

1

低評価をもらったので、実行可能結果まで載せました!Thanks!

2020/05/18 09:04

投稿

退会済みユーザー
test CHANGED
@@ -1,15 +1,77 @@
1
- これでし
1
+ 実行確認済みの全ソースす。そもそも質問のコードは[OpenCVのPythonのチュートリアル](https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_objdetect/py_face_detection/py_face_detection.html)とほぼ全く同じですよね。haarcascadesのファイルはインストール済みのOpenCVのディレクトリのshareとの下にあります。環境によって違うの見つからなければ検索てPythonのソースコードと同じディレクトリにhaarcascadesと言ディレクトリを丸ごとコピーしてください。
2
+
3
+
2
4
 
3
5
  ```py3
4
6
 
5
- def facedetect(filename):
7
+ import os
6
8
 
7
- face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
9
+ import cv2
8
10
 
9
- eye_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_eye.xml')
11
+ import numpy as np
10
12
 
11
- img = cv2.imread(filename)
13
+ from matplotlib import pyplot as plt
12
14
 
13
15
 
14
16
 
17
+
18
+
19
+ def facedetect(imagefile):
20
+
21
+ face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
22
+
23
+ eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
24
+
25
+ img = cv2.imread(imagefile)
26
+
27
+ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
28
+
29
+ faces = face_cascade.detectMultiScale(gray, 1.3, 5)
30
+
31
+ for (x, y, w, h) in faces:
32
+
33
+ cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
34
+
35
+ roi_gray = gray[y:y+h, x:x+w]
36
+
37
+ roi_color = img[y:y+h, x:x+w]
38
+
39
+ eyes = eye_cascade.detectMultiScale(roi_gray)
40
+
41
+ for(ex, ey, ew, eh) in eyes:
42
+
43
+ cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)
44
+
45
+ plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
46
+
47
+ plt.show()
48
+
49
+
50
+
51
+
52
+
53
+ if __name__ == '__main__':
54
+
55
+ imagefile = 'lena.jpg'
56
+
57
+ if os.path.exists(imagefile):
58
+
59
+ facedetect(imagefile)
60
+
15
61
  ```
62
+
63
+
64
+
65
+ オマケにレナさん1972年当時21才と2019年67才の時の入力画像です。
66
+
67
+
68
+
69
+ ![イメージ説明](e75c61d73b8d0b0720efb9f396e1c853.jpeg)
70
+
71
+
72
+
73
+ 実行結果
74
+
75
+
76
+
77
+ ![検出できました!](f5ee2f1854c8f740ac610d6c7467b55b.png)