OpenCV行人檢測--基于米爾全志T527開(kāi)發(fā)板
本文將介紹基于米爾電子MYD-LT527開(kāi)發(fā)板(米爾基于全志 T527開(kāi)發(fā)板)的OpenCV行人檢測方案測試。
米爾基于全志T527開(kāi)發(fā)板
一、軟件環(huán)境安裝
1.安裝OpenCV
sudo apt-get install libopencv-dev python3-opencv
2.安裝pip
sudo apt-get install python3-pip
二、行人檢測概論
使用HOG和SVM構建行人檢測器的關(guān)鍵步驟包括:
準備訓練數據集:訓練數據集應包含大量正樣本(行人圖像)和負樣本(非行人圖像)。
計算HOG特征:對于每個(gè)圖像,計算HOG特征。HOG特征是一個(gè)一維向量,其中每個(gè)元素表示圖像中特定位置和方向的梯度強度。
訓練SVM分類(lèi)器:使用HOG特征作為輸入,訓練SVM分類(lèi)器。SVM分類(lèi)器將學(xué)習區分行人和非行人。
評估模型:使用測試數據集評估訓練后的模型。計算模型的準確率、召回率和F1分數等指標。
三、代碼實(shí)現
import cv2
import time
def detect(image,scale):
imagex=image.copy() #函數內部做個(gè)副本,讓每個(gè)函數運行在不同的圖像上
hog = cv2.HOGDescriptor() #初始化方向梯度直方圖描述子
#設置SVM為一個(gè)預先訓練好的行人檢測器
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
#調用函數detectMultiScale,檢測行人對應的邊框
time_start = time.time() #記錄開(kāi)始時(shí)間
#獲?。ㄐ腥藢木匦慰?、對應的權重)
(rects, weights) = hog.detectMultiScale(imagex,scale=scale)
time_end = time.time() #記錄結束時(shí)間
# 繪制每一個(gè)矩形框
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()
四、實(shí)際操作
評論