OpenCVを用いて顔検出は出来たのですが、
上半身や下半身などを抽出することができないです。
顔検出できたコードのhaarcascade_frontalface_altをhaarcascade_upperbody、front_faceをupperbodyに書き換えればできると思ったのですが間違いなんでしょうか。
顔検出できたときのコードを書き換えたものです。
勉強不足かもしれませんが、よろしくお願いします。
import cv2 import matplotlib.pyplot as plt # 画像読込み origin_img = cv2.imread("image.jpg") # 画像コピー img = origin_img.copy() # カスケードファイルのパス cascade_path = "haarcascade_upperbody.xml" # カスケード分類器の特徴量取得 cascade = cv2.CascadeClassifier(cascade_path) # 画像グレースケール化 grayscale_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 顔検出 # minSize 最小サイズ指定 front_face_list = cascade.detectMultiScale(grayscale_img, minSize = (100, 100)) # 検出判定 print(upperbody_list) if len(upperbody_list) == 0: print("Failed") quit() # 検出位置描画 for (x,y,w,h) in upperbody_list: print("[x,y] = %d,%d [w,h] = %d,%d" %(x, y, w, h)) cv2.rectangle(img, (x,y), (x+w, y+h), (0, 0, 255), thickness=10) # 顔検出画像表示 plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.show() # 顔検出画像出力 cv2.imwrite("out.jpg", img) # 検出画像出力 for (x,y,w,h) in upperbody_list: upperbody_img = origin_img[y:y+h, x:x+w] filename = "upperbody_" + str(x) + "-" + str(y) + ".jpg" cv2.imwrite(filename, upperbody_img)
このようなエラーが出てしまいました。
NameError: name 'upperbody_list' is not defined
回答2件
あなたの回答
tips
プレビュー