资源简介

视频检测跟踪技术是一门融合了图像处理、计算机视觉、模式识别、人工智能等学科的技术。所谓视频跟踪,是指对视频图像序列中的特定目标进行检测、提取、识别和跟踪,获得目标的位置参数,或者目标整体所占的图像区域,亦或是目标的运动轨迹等,从而进行后续深入的处理与分析,以实现对特定目标的行为理解。目标检测跟踪技术在诸如安全与监控系统、交通控制系统、定位导航系统、虚拟现实等诸多方面均有广阔的应用,具有重要的军事、商业价值。而人物追踪技术一直是当代的热门技术话题之一,其研究和发展能够更好的改善人们的生活。基于树莓派的人脸追踪系统是这一技术发展的重要体现。

资源截图

代码片段和文件信息

### 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
   

评论

共有 条评论