前提
PythonでOpenCVを使い、カメラ撮影して静止画に保存し、その静止画から人物(全体像)を抽出して赤枠で囲み、人物(全体像)抽出した静止画(赤枠付)をJINBUTU.JPGとして保存をしたいのですが、うまくいきません。エラーは無事なくなったのですが、うまく全体を枠で囲めませんでした。原因を教えてください。
実現したいこと
カメラ撮影して静止画に保存し、その静止画から人物(全体像)を抽出して赤枠で囲む
人物(全体像)抽出した静止画(赤枠付)をJINBUTU.JPGとして保存したい
該当のソースコード
import cv2 import time def __main(): camera = cv2.VideoCapture(0) camera.set(cv2.CAP_PROP_FRAME_WIDTH,1280) camera.set(cv2.CAP_PROP_FRAME_HEIGHT,720) if not camera.isOpened(): #ビデオキャプチャー可能か判断 print("Not Opened Video Camera") exit() ret.img = camera.read() if not ret: #キャプチャー画像取得に失敗したら終了 print("Video Capture Err") exit() img = cv2.imread('./DSCF0769.JPG') img = getResize(img) timeStart = time.time() # ここから処理を実行する img = getPeople(img) timeEnd = time.time() print("{0} = {1}".format('CPU', (timeEnd - timeStart) * 1000) + "/ms") cv2.imshow('Final result', img) cv2.waitKey(0) cv2.destroyAllWindows() def getPeople(img): global face_cascade grayimg = cv2.cvtColor(src=img, code=cv2.COLOR_BGR2GRAY) facerect = face_cascade.detectMultiScale(grayimg, scaleFactor=1.01,minNeighbors=10) #顔が検出された場合 if len(facerect) > 0: # 検出した場所すべてに赤色で枠を描画する for x, y, w, h in facerect: cv2.rectangle(img=img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 255, 255), thickness=3) return img def getResize(img): basePixSize = 640 # 縦横で大きい辺の変更したいサイズ height = img.shape[0] width = img.shape[1] largeSize = max(height, width) # 大きい方の辺のサイズ resizeRate = basePixSize / largeSize # 変更比率を計算 img = cv2.resize(img, (int(width * resizeRate), int(height * resizeRate))) return img if __name__ == '__main__': print(cv2.__version__) face_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml') __main()
エラー
エラーはなくなりました。