質問編集履歴
1
コード
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
OpenCVを用いて顔検出は出来たのですが、
|
2
2
|
上半身や下半身などを抽出することができないです。
|
3
|
-
顔検出できたコードを
|
3
|
+
顔検出できたコードのhaarcascade_frontalface_altをhaarcascade_upperbody、front_faceをupperbodyに書き換えればできると思ったのですが間違いなんでしょうか。
|
4
4
|
|
5
|
-
顔検出できたときのコードです。
|
5
|
+
顔検出できたときのコードを書き換えたものです。
|
6
6
|
勉強不足かもしれませんが、よろしくお願いします。
|
7
7
|
|
8
8
|
```ここに言語を入力
|
@@ -15,7 +15,7 @@
|
|
15
15
|
img = origin_img.copy()
|
16
16
|
|
17
17
|
# カスケードファイルのパス
|
18
|
-
cascade_path = "
|
18
|
+
cascade_path = "haarcascade_upperbody.xml"
|
19
19
|
|
20
20
|
# カスケード分類器の特徴量取得
|
21
21
|
cascade = cv2.CascadeClassifier(cascade_path)
|
@@ -27,13 +27,13 @@
|
|
27
27
|
front_face_list = cascade.detectMultiScale(grayscale_img, minSize = (100, 100))
|
28
28
|
|
29
29
|
# 検出判定
|
30
|
-
print(
|
30
|
+
print(upperbody_list)
|
31
|
-
if len(
|
31
|
+
if len(upperbody_list) == 0:
|
32
32
|
print("Failed")
|
33
33
|
quit()
|
34
34
|
|
35
35
|
# 検出位置描画
|
36
|
-
for (x,y,w,h) in
|
36
|
+
for (x,y,w,h) in upperbody_list:
|
37
37
|
print("[x,y] = %d,%d [w,h] = %d,%d" %(x, y, w, h))
|
38
38
|
cv2.rectangle(img, (x,y), (x+w, y+h), (0, 0, 255), thickness=10)
|
39
39
|
|
@@ -44,8 +44,13 @@
|
|
44
44
|
cv2.imwrite("out.jpg", img)
|
45
45
|
|
46
46
|
# 検出画像出力
|
47
|
-
for (x,y,w,h) in
|
47
|
+
for (x,y,w,h) in upperbody_list:
|
48
|
-
|
48
|
+
upperbody_img = origin_img[y:y+h, x:x+w]
|
49
|
-
filename = "
|
49
|
+
filename = "upperbody_" + str(x) + "-" + str(y) + ".jpg"
|
50
|
-
cv2.imwrite(filename,
|
50
|
+
cv2.imwrite(filename, upperbody_img)
|
51
|
+
```
|
52
|
+
|
53
|
+
このようなエラーが出てしまいました。
|
54
|
+
```
|
55
|
+
NameError: name 'upperbody_list' is not defined
|
51
56
|
```
|