发布时间:2024-11-02 19:01
最近一直在做人脸识别与跟踪这个方面的研究,想着几天下来接触过的知识几类容实在太多,时间一长有可能就会忘记,特别是编程时才犯的一些错误,等到下次在重新编译同一串代码时希望能提醒自己,节约时间,所以对这几天的工作做一些小的总结:
此次主要针对《ros by example》这本书后面第十/十一/十二三章类容,因为后面三章主要讲述机器人在人脸检测/跟踪方面。
首先在看之前要根据前面六章的类容把ros的基本环境给配置好,特别时rbx1这个包下载并编译好,书上有就不在说了。
(1)安装openni,ros的相机驱动,所以直接在终端输入:
$ sudo apt-get install ros-indigo-openni-* ros-indigo-openni2-* \\ros-indigo-freenect-*
$ rospack profile
下面测试你的camera,我是用的时xtion,所以输入:
$ roslaunch openni2_launch openni2.launch depth_registration:=true
接下来运行:$ rosrun image_view image_view image:=/camera/rgb/image_raw
你就可以看到一个小窗口图像了。
要是获取深度图像运行:$ rosrun image_view image_view
image:=/camera/ depth_registered /image_rect
然后Installing OpenCV on Ubuntu Linux:
$ sudo apt-get install ros-indigo-vision-opencv libopencv-dev \\python-opencv
$ rospack profile
检测一下安装是否正确:
$ python
>>> from cv2 import cv
>>> quit()
至此基本的相机方面的配置完成,可以看到成像,一般不会有什么错误。
(2)Face Detection
$ roslaunch freenect_launch freenect registered-xyzrgb.launch
$ roslaunch openni2_launch openni2.launch depth_registration:=true
$ roslaunch rbx1_vision face_detector.launch
这时出现的窗口就可以做简单的检测,效果挺差。。。
3. 使用光流法检测:roslaunch rbx1_vision lk_tracker.launch
效果要好点,但差强人意啊。
4. 建立人脸跟踪:$ roslaunch rbx1_vision face_tracker.launch
此时窗口中检测到的人脸框会随着你的移动二移动。
5. 针对4中的方法做了一个优化,对keypoint有一个增加和丢弃的选择过程:$ roslaunch rbx1_vision face_tracker2.launch
6. Color Blob Tracking (CamShift):$ roslaunch rbx1_vision camshift.launch
注:***此过程中因为使用catkin_ws工作间中事先你导入的rbx1包,所以你每次打开一个新的终端运行其中的.launch文件时都要进行编译:$ catkin_make
$ source devel/setup.bash***
至此,书中的人脸检测基本结束,但是运行的效果真的是有点不太好,所以还在想这怎么改进,正在查阅相关资料,后续补充。。。
(2) 跟踪
1. 在虚拟环境中进行跟踪测试
首先一样,打开 xtion camera:$ roslaunch openni2_launch openni2.launch depth_registration:=true
依次打开新的终端,编译catkin_ws工作区间,然后输入
face_tracker2 node:$ roslaunch rbx1_vision face_tracker2.launch
object_tracker node:$ roslaunch rbx1_apps object_tracker.launch
turtlebot 模型:$ roslaunch rbx1_bringup fake_turtlebot.launch
rviz :$ rosrun rviz rviz -d
rospack find rbx1_nav/sim.rviz
这样基本上可以看到一个有光流法人脸检测跟踪的窗口了,这个效果还是可以的,基本检测到一个人时,一直到改人消失才会检测第二个人。
2. 测试对象跟随
打开camera:$ roslaunch openni2_launch openni2.launch depth_registration:=true
fake TurtleBot and RViz :
$ roslaunch rbx1_bringup fake_turtlebot.launch
rospack find rbx1_nav
$ rosrun rviz rviz -d/sim.rviz
face_tracker2 node:$ roslaunch rbx1_vision face_tracker2.launch
object_follower node:$ roslaunch rbx1_apps object_follower.launch
CamShift node:$ roslaunch rbx1_vision camshift.launch
依次运行即可。通过$ rostopic list 可以看到topic信息。
基本的情况就是这样了,后面还在看资料,有新的发现后续补充。。求有相关研究的大牛们能够给我一点指导和资料,加我也可以哦。
YOLOv7官方出品 Alexey Bochkovskiy操刀,精度速度超越当前所有YOLO系列
【docker专栏4】使用docker安装nginx提供web服务
CV进阶 -- 目标检测原理及代码实现、YOLO源码解读学习
CartPole 强化学习详解2 - Policy Gradient
MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据
【云原生之Docker实战】使用docker部署nacos平台
creator小游戏代码购买_2020年了,Unity能打微信小游戏包了吗?
spark读取hive表异常,处理WARN HiveExternalCatalog: The table schema given by Hive metastore