前面我们实现了在RGB相机上进行物体的对象跟踪,能够实时跟踪我们想要追踪的物探,但是,如果我们要想知道这个物体的三维空间坐标,该如何实现呢?要想实现这个功能,我们需要用到DepthAI API提供的MobileNetSpatialDetectionNetwork节点和ObjectTracker节点,现在我们来实现它。
这里我们依然用到了mobilenet-ssd_openvino_2021.4_6shave.blob
模型文件,将其下载到本地models文件夹
Setup 1: 创建文件
- 创建新建17-spatial-object-tracker-on-rgb文件夹
- 用vscode打开该文件夹
- 新建一个main.py 文件
Setup 2: 安装依赖
安装依赖前需要先创建和激活虚拟环境,我这里已经创建了虚拟环境OAKenv,在终端中输入cd…退回到OAKenv的根目录,输入 OAKenv\Scripts\activate
激活虚拟环境
安装pip依赖项:
pip install numpy opencv-python depthai blobconverter --user
Setup 3: 导入需要的包
在main.py中导入项目需要的包
from pathlib import Path
import cv2
import depthai as dai
import numpy as np
import time
import argparse
pathlib
用于处理文件路径,sys
用于系统相关的操作,cv2
是OpenCV库用于图像处理,depthai
是depthai库用于深度计算和AI推理。time
用于处理时间,argparse
用于处理命令行参数。
time
库:用于处理和操作时间相关的功能和操作。提供了许多用于测量时间、获取当前时间、等待或延迟执行的函数。可用于计时、性能测试、调度任务等场景。例如,time.time()
可以获取当前的时间戳,time.sleep()
可以使程序休眠指定时间。文章来源:https://www.toymoban.com/news/detail-519077.html
argparse
库:用于解析命令行参数以及生成用户友好的命令行界面。文章来源地址https://www.toymoban.com/news/detail-519077.html
- 允许定义程序所需的命令行参数,并自动解析和验证这些参数。
- 可以处理位置参数、可选参数、布尔标志等多种参数类型。
- 使用
argparse
可以实现灵活的命令行接口,使得程序可以方便地从命令行中获得输入。 - 例如,可以使用
argparse.ArgumentParser
创建一个解析器对象,定义参数后调用parse_args()
方法解析命令行参数。
Setup 4:定义和加载模型相关的路径和标签
labelMap = ["background", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow","diningtable", "dog", "horse", "motorbike", "person", pottedplant", "sheep", "sofa", "train", "tvmonitor"]
nnPathDefault = str((Path(__file__).parent / Path('../models/mobilenet-ssd_openvino_2021.4_6shave.blob')).resolve(
到了这里,关于一步一步学OAK之十三:实现RGB相机上的空间对象跟踪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!