本文將介紹基于米爾電子MYD-LT527開發板(米爾基于全志T527開發板)的OpenCV行人檢測方案測試。 摘自優秀創作者-小火苗
一、軟件環境安裝1.在全志T527開發板安裝OpenCV - sudo apt-get install libopencv-dev python3-opencv
復制代碼
2.在全志T527開發板安裝pip- sudo apt-get install python3-pip
復制代碼
二、行人檢測概論使用HOG和SVM基于全志T527開發板構建行人檢測器的關鍵步驟包括:準備訓練數據集:訓練數據集應包含大量正樣本(行人圖像)和負樣本(非行人圖像)。 計算HOG特征:對于每個圖像,計算HOG特征。HOG特征是一個一維向量,其中每個元素表示圖像中特定位置和方向的梯度強度。 訓練SVM分類器:使用HOG特征作為輸入,訓練SVM分類器。SVM分類器將學習區分行人和非行人。 評估模型:使用測試數據集評估訓練后的模型。計算模型的準確率、召回率和F1分數等指標。
三、代碼實現- import cv2
- import time
- def detect(image,scale):
- imagex=image.copy() #函數內部做個副本,讓每個函數運行在不同的圖像上
- hog = cv2.HOGDescriptor() #初始化方向梯度直方圖描述子
- #設置SVM為一個預先訓練好的行人檢測器
- hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
- #調用函數detectMultiScale,檢測行人對應的邊框
- time_start = time.time() #記錄開始時間
- #獲取(行人對應的矩形框、對應的權重)
- (rects, weights) = hog.detectMultiScale(imagex,scale=scale)
- time_end = time.time() #記錄結束時間
- # 繪制每一個矩形框
- for (x, y, w, h) in rects:
- cv2.rectangle(imagex, (x, y), (x + w, y + h), (0, 0, 255), 2)
- print("sacle size:",scale,",time:",time_end-time_start)
- name=str(scale)
- cv2.imshow(name, imagex) #顯示原始效果
- image = cv2.imread("back.jpg")
- detect(image,1.01)
- detect(image,1.05)
- detect(image,1.3)
- cv2.waitKey(0)
- cv2.destroyAllWindows()
復制代碼
四、實際操作
|