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