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

質問編集履歴

1

コード

2020/08/24 03:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,8 @@
1
1
  OpenCVを用いて顔検出は出来たのですが、
2
2
  上半身や下半身などを抽出することができないです。
3
- 顔検出できたコードをうまく書き換えればうまくいくと思ったのですが間違いなんでしょうか。
3
+ 顔検出できたコードのhaarcascade_frontalface_althaarcascade_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 = "haarcascade_frontalface_alt.xml"
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(front_face_list)
30
+ print(upperbody_list)
31
- if len(front_face_list) == 0:
31
+ if len(upperbody_list) == 0:
32
32
  print("Failed")
33
33
  quit()
34
34
 
35
35
  # 検出位置描画
36
- for (x,y,w,h) in front_face_list:
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 front_face_list:
47
+ for (x,y,w,h) in upperbody_list:
48
- face_img = origin_img[y:y+h, x:x+w]
48
+ upperbody_img = origin_img[y:y+h, x:x+w]
49
- filename = "face_" + str(x) + "-" + str(y) + ".jpg"
49
+ filename = "upperbody_" + str(x) + "-" + str(y) + ".jpg"
50
- cv2.imwrite(filename, face_img)
50
+ cv2.imwrite(filename, upperbody_img)
51
+ ```
52
+
53
+ このようなエラーが出てしまいました。
54
+ ```
55
+ NameError: name 'upperbody_list' is not defined
51
56
  ```