カスケードファイルを用いて上半身の検出を行いたいのですがFailedと出てしまいます。
同じようにやったら顔検出はうまくいきました。
カスケードファイルは上半身や下半身などはうまく検出されないのでしょうか。
回答していただけると幸いです。
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 最小サイズ指定 upperbody_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("outupper.jpg", img) # 検出画像出力 for (x,y,w,h) in upperbody_list: upperbody_img = origin_img[y:y+h, x:x+w] filename = "upper_" + str(x) + "-" + str(y) + ".jpg" cv2.imwrite(filename, upperbody_img)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/18 15:17 編集