# ZYNQ_ddctracking **Repository Path**: openfpga/ddctracking ## Basic Information - **Project Name**: ZYNQ_ddctracking - **Description**: ZYNQ使用云台相机进行实时对象跟踪(肤色追踪实验) - **Primary Language**: Verilog - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2021-12-26 - **Last Updated**: 2025-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 使用云台相机进行实时对象跟踪(肤色追踪实验) IPC摄像头将跟踪对象保持在视频的中心。 ![](https://files.mdnice.com/user/17442/43645974-3339-4f8f-86e8-12b40390b3cb.png) # 硬件 ![](https://files.mdnice.com/user/17442/4a13df62-8862-436a-98fe-6a683bd3adf8.png)
FPGA Zybo
![](https://files.mdnice.com/user/17442/f033b735-5af5-48b2-a4b1-39872674f6fe.png)
AXIS V5915 50HZ PTZ
# 介绍 对象跟踪是在视频序列的每个连续帧中寻找感兴趣的区域,在许多应用中都很有用,例如汽车行业、自动视频监控系统和手势识别。 该项目展示了使用 Zybo Z7-20 SoC 的 FPGA 加速跟踪算法。该系统还包含 AXIS V5915 PTZ 摄像机,通过与摄像机服务器的 TCP 连接而进行控制达到我们的目的。 # 肤色追踪 肤色识别是在YCbCr色彩空间中完成的,可以通过RGB像素乘以3x3转换矩阵来实现: ![](https://files.mdnice.com/user/17442/dc6da99c-a001-4d9b-88e2-216f1680a0e3.png) 转换后,可以创建肤色分类掩码,255 值表示像素被认为是皮肤。 ![](https://files.mdnice.com/user/17442/bc8a3922-04a7-40f2-8fac-3f56cb20abfc.png) Ta、Tb、Tc、Td 值是通过实验确定的。 分类后,可以计算皮肤区域的中心坐标: ![](https://files.mdnice.com/user/17442/f7dc7432-0956-478e-bd83-802839df4f47.png) 具体位置计算: ![](https://files.mdnice.com/user/17442/cdaf5e56-470e-4f27-92aa-814a26ddc6c7.png) Im(i, j) 是 (i, j) 像素坐标的掩码值。 # 控制相机的位置 相机的服务器在 TCP 端口 80 上接受 HTTP 请求,其结构如下所示: ![](https://files.mdnice.com/user/17442/a8ff9aff-9e4a-4e0a-b0b2-665f26be1a32.png) 例如,如果我们想将相机绕垂直轴向右旋转 10 度,则应发送以下请求: ![](https://files.mdnice.com/user/17442/3b878507-3ff3-4306-abc4-426c03df54d1.png) 其他参数如下表所示: ![](https://files.mdnice.com/user/17442/b2e0e01d-df2d-487d-891c-b92d71471b2d.png) # 系统架构设计 使用异构 Zynq-7000 SoC,可以将项目划分为两个子系统:在可编程逻辑中实现的肤色跟踪算法,负责计算跟踪对象位置并将其写入 AXI4 Lite 接口,以及负责从 AXI4 获取对象坐标的相机控制系统接口并通过 TCP 循环控制相机的速度。总图如图 1 所示。 ![](https://files.mdnice.com/user/17442/22211536-04f3-4431-9e80-ae452cbd9b8a.png) # PS端设计 使用了 Xilinx SDK自带的 TCP Client 示例项目的进行修改。主程序循环如图所示(详细见源码)。 ![](https://files.mdnice.com/user/17442/790b5a34-f7ca-4251-8e99-9062b77b309a.png) # PL端设计 顶块设计如图所示。 ![](https://files.mdnice.com/user/17442/945033d9-1ee4-4163-9e6d-b818982990b1.png) # 演示 ![](https://gitee.com/openfpga/ddctracking/blob/master/image/jiance.gif) ![](https://gitee.com/openfpga/ddctracking/blob/master/image/yundong.gif) # 参考来源 > https://github.com/mdanilow/ddctracking # 使用 Step 1. 摄像头端设置(IP等). - Open project in Vivado. - File > Launch SDK. - camera control project is "clientboys" - in line 64 of "main.c" define your camera's network location - in file "tcp_perf_client.c", line 212, edit your camera's request structure Step 2. Build project Step 3. Generate bitstream in Vivado Step 4. Click "Program FPGA" in SDK and then Run