前段时间学习了基于opencv的运动物体检测,现将学习经验分享如下。
一、原理
这次的运动物体检测用到了古月居大侠的代码然后稍加修改了一下,但整体功能没有太大变化。基于opencv的运动物体检测的原理为:先接收kinect发布的图像话题,将此接收到的RGB图像转换为opencv可处理的灰度图像,经过高斯滤波函数进行图像平滑处理后,获取该灰度图和前一张灰度图的灰度差值,若没检测到运动物体,则灰度差值为零;若检测到运动物体,则灰度差值不为零。
将得到的灰度差值图和阈值比较,若大于阈值,该像素点置为255(白色);否则置为0(黑色)。并根据白色区域求得面积以及每次检测中最大运动物体并用绿色框框住。
二、涉及到的opencv库函数详解
1、bridge.imgmsg_to_cv2()函数
该函数用于将ROS图像消息转换为opencv可以处理的图像形式。第一个参数为输入的图像;第二个参数为转换后的图像格式。更多格式如下图:
2、cv2.cvtColor()函数
该函数为颜色空间转换函数。第一个参数为输入的图像;第二个参数为从转换前到转换