10-2Hog.py

000: import cv2
001:
002: def __main():
003: img = cv2.imread(‘DSCF0769.JPG’)
004: img = getResize(img)
005:
006: # ここから処理を実行する
007: img = getPeople(img)
008:
009: cv2.imshow(‘Final result’, img)
010: cv2.waitKey(0)
011:
012: cv2.destroyAllWindows()
013:
014: # ここから実行する
015: def getPeople(img):
016: gray = cv2.cvtColor(src=img, code=cv2.COLOR_BGR2GRAY)
017: hog = cv2.HOGDescriptor()
018: hog.setSVMDetector(svmdetector=cv2.HOGDescriptor_getDefaultPeopleDetector())
019: # winStride(ウィンドウの移動量) padding(入力画像の周囲の拡張範囲)
020: human, _ = hog.detectMultiScale(img=gray, winStride=(10, 10), padding=(15, 15), scale=None)
021: for (x, y, w, h) in human:
022: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 255), 3)
023:
024: return img
025:
026: def getResize(img):
027: basePixSize = 1280 # 縦横で大きい辺の変更したいサイズ
028: height = img.shape[0]
029: width = img.shape[1]
030:
031: largeSize = max(height, width) # 大きい方の辺のサイズ
032: resizeRate = basePixSize / largeSize # 変更比率を計算
033: img = cv2.resize(img, (int(width * resizeRate), int(height * resizeRate)))
034:
035: return img
036:
037: if __name__ == ‘__main__’:
038: print(cv2.__version__)
039:
040: __main()
041: