如何在 OpenCV Python 中檢測影像中的人類?
要檢測影像中的人類並在其周圍繪製邊界框,您可以使用以下步驟 -
匯入所需的庫。在以下所有示例中,所需的 Python 庫是OpenCV。確保您已安裝它。
使用cv2.imread()以灰度方式讀取輸入影像。指定完整的影像路徑。
初始化一個HOG描述符物件hog = cv2.HOGDescriptor()並將SVM檢測器設定為hog.setSVMDetector()作為預設的人員檢測器。
使用hog.detectMultiScale()檢測輸入影像中的人類。它以(x,y,w,h)格式返回檢測到的人類的座標。
迴圈遍歷影像中所有檢測到的人類,並使用cv2.rectangle()在原始影像中檢測到的人類周圍繪製邊界矩形。
顯示帶有在人類周圍繪製的邊界矩形的影像。
讓我們看看下面的示例以獲得更清晰的理解。
我們將使用此影像作為以下示例的輸入檔案 -
示例
在此示例中,使用 Hog 描述符檢測輸入影像中的人類。
# import required libraries import cv2 # Reading the Image image = cv2.imread('people1.jpg') # initialize the HOG descriptor hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # detect humans in input image (humans, _) = hog.detectMultiScale(image, winStride=(10, 10), padding=(32, 32), scale=1.1) # getting no. of human detected print('Human Detected : ', len(humans)) # loop over all detected humans for (x, y, w, h) in humans: pad_w, pad_h = int(0.15 * w), int(0.01 * h) cv2.rectangle(image, (x + pad_w, y + pad_h), (x + w - pad_w, y + h - pad_h), (0, 255, 0), 2) # display the output image cv2.imshow("Image", image) cv2.waitKey(0) cv2.destroyAllWindows()
輸出
執行上述 Python 程式時,它將產生以下輸出 -
Human Detected: 4
並且我們得到以下輸出視窗 -
檢測到的人類周圍的邊界框以綠色繪製。
廣告