最近几天学习了好多opencv里有关轮廓查找与绘制的函数,想做一下整理,把所有学的函数列出来,以便于统一思考一下,怎样充分的运用它们做一些自己想做的事情。就比如我最近参加一个比赛,负责做我们项目里的动作行为识别,轮廓识别就是首当其冲的一个研究点。
今天把它们列在这里,也希望可以帮到各位博客友人,以便于思考解决你们想做的事情。
1、什么是轮廓?
轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度,提取轮廓就是提取这些具有相同颜色或者灰度的曲线,或者说是连通域,轮廓在形状分析和物体的检测和识别中非常有用。
注意事项:
①为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理
或者 Canny 边界检测
②查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图
像的话,你应该将原始图像存储到其他变量中(clone(), copyTo())
③在OpenCV中,查找轮廓就像在黑色背景中找白色物体。你应该记住,
要找的物体应该是白色而背景应该是黑色。
2、开始上函数!
(1)查找轮廓---findContours()
CV_RETR_EXTERNAL=0-----表示只检测最外层轮廓
CV_RETR_LIST=1------提取所有轮廓并放置在list中, 轮廓不建立等级关系
CV_RETR_CCOMP=2------提取所有轮廓并组织为双层结构
CV_RETR_TREE=3------提取所有轮廓并重新建立网状轮廓结构
(2)绘制轮廓---draw