資源簡介
視頻檢測跟蹤技術是一門融合了圖像處理、計算機視覺、模式識別、人工智能等學科的技術。所謂視頻跟蹤,是指對視頻圖像序列中的特定目標進行檢測、提取、識別和跟蹤,獲得目標的位置參數,或者目標整體所占的圖像區域,亦或是目標的運動軌跡等,從而進行后續深入的處理與分析,以實現對特定目標的行為理解。目標檢測跟蹤技術在諸如安全與監控系統、交通控制系統、定位導航系統、虛擬現實等諸多方面均有廣闊的應用,具有重要的軍事、商業價值。而人物追蹤技術一直是當代的熱門技術話題之一,其研究和發展能夠更好的改善人們的生活。基于樹莓派的人臉追蹤系統是這一技術發展的重要體現。
代碼片段和文件信息
###?Imports?###################################################################
from?picamera.array?import?PiRGBArray
from?picamera?import?PiCamera
from?functools?import?partial
import?multiprocessing?as?mp
import?cv2
import?os
import?time
###?Setup?#####################################################################
os.putenv(‘SDL_FBDEV‘?‘/dev/fb0‘)
resX?=?320
resY?=?240
cx?=?resX?/?2
cy?=?resY?/?2
os.system(“echo?0=150?>?/dev/servoblaster“)
os.system(“echo?1=150?>?/dev/servoblaster“)
xdeg?=?150
ydeg?=?150
#?Setup?the?camera
camera?=?PiCamera()
camera.resolution?=?(resX?resY)
camera.framerate?=?60
#?Use?this?as?our?output
rawCapture?=?PiRGBArray(camera?size=(resX?resY))
#?The?face?cascade?file?to?be?used
face_cascade?=?cv2.CascadeClassifier(‘/home/pi/opencv-3.3.0/data/lbpcascades/lbpcascade_frontalface.xml‘)
t_start?=?time.time()
fps?=?0
###?Helper?Functions?##########################################################
def?get_faces(img):
????gray?=?cv2.cvtColor(img?cv2.COLOR_BGR2GRAY)
????faces?=?face_cascade.detectMultiScale(gray)
????return?faces?img
def?draw_frame(img?faces):
????global?xdeg
????global?ydeg
????global?fps
????global?time_t
????#?Draw?a?rectangle?around?every?face
????for?(x?y?w?h)?in?faces:
????????cv2.rectangle(img?(x?y)?(x?+?w?y?+?h)?(200?255?0)?2)
????????cv2.putText(img?“Face?No.“?+?str(len(faces))?(x?y)?cv2.FONT_HERSHEY_SIMPLEX?0.5?(0?0?255)?2)
????????tx?=?x?+?w?/?2
????????ty?=?y?+?h?/?2
????????if?(cx?-?tx?>?15?and?xdeg?<=?190):
????????????xdeg?+=?1
????????????os.system(“echo?0=“?+?str(xdeg)?+?“?>?/dev/servoblaster“)
????????elif?(cx?-?tx?-15?and?xdeg?>=?110):
????????????xdeg?-=?1
????????????os.system(“echo?0=“?+?str(xdeg)?+?“?>?/dev/servoblaster“)
????????if?(cy?-?ty?>?15?and?ydeg?>=?110):
????????????ydeg?-=?1
????????????os.system(“echo?1=“?+?str(ydeg)?+?“?>?/dev/servoblaster“)
????????elif?(cy?-?ty?-15?and?ydeg?<=?190):
????????????ydeg?+=?1
????????????os.system(“echo?1=“?+?str(ydeg)?+?“?>?/dev/servoblaster“)
????#?Calculate?and?show?the?FPS
????fps?=?fps?+?1
???
評論
共有 條評論