一般轮廓提取是通过对图像的梯度进行卷积计算,得到图像边缘(滤波),常用的边缘检测方法有candy、sobel、 Laplacian等,再对二值化后的边缘图像进行轮廓计算;

1、Candy算子;

     cv::cvtColor(img, grayImg, cv::COLOR_RGB2GRAY);
cv::blur(grayImg, tempImage, cv::Size(3,3));//先用均值滤波器进行平滑去噪
cv::Canny(tempImage, binaryImg, threshod,threshod * 3);

candy算子计算得到的是二值图像;

2、sobel算子;

        cv::Mat  tpImg,temp1,temp2,dstImg;
cv::Sobel(img, tpImg, CV_16S, 1, 0,(2* kernelSize+1),1,1,cv::BORDER_DEFAULT);//求x方向梯度
cv::convertScaleAbs(tpImg, temp1);//计算绝对值,并将结果转换成8位
cv::Sobel(img, tempImage, CV_16S, 0, 1,(2*kernelSize+1),1,1,cv::BORDER_DEFAULT);//求y方向梯度
cv::convertScaleAbs(tempImage, temp2);//计算绝对值,并将结果转换成8位
addWeighted(temp1, 0.5, temp2, 0.5, 0, dstImg); //进行轮廓检测;
cv::cvtColor(dstImg,grayImg,cv::COLOR_RGB2GRAY);
cv::threshold(grayImg,binaryImg,0,255,cv::THRESH_BINARY | cv::THRESH_OTSU);

3、Laplacian算子;

        cv::Mat temp1,temp2,dstImg;
cv::GaussianBlur(img, temp1, cv::Size(3,3), 0,0,cv::BORDER_DEFAULT);//高斯滤波消除噪声
cv::cvtColor(temp1, grayImg, cv::COLOR_RGB2GRAY);
cv::Laplacian(grayImg, temp2, CV_16S,(kernelSize*2+1),1,0,cv::BORDER_DEFAULT);
convertScaleAbs(temp2, dstImg);
cv::threshold(dstImg,binaryImg,0,255,cv::THRESH_BINARY | cv::THRESH_OTSU);

轮廓提取:

opencv提供了findContours函数来提取二值图的轮廓,利用drawContours能够标记提取得到的轮廓;

findContours:

C++: void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())

C++: void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset=Point())¶

 

drawContours:

C++: void drawContours(InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scalar& color, int thickness=1, int lineType=8, InputArray hierarchy=noArray(), int maxLevel=INT_MAX, Point offset=Point() )

  

注: 此博文为扩展型;

opencv: 轮廓提取;的更多相关文章

  1. opencv轮廓提取、轮廓识别相关要点

    1.轮廓提取 src = cv2.imread("***.jpg", cv2.IMREAD_COLOR) gray = cv2.cvtColor(src ,cv2.COLOR_BG ...

  2. OpenCV示例学习笔记(1)-contours2.cpp-通过findContours 函数实现轮廓提取

    这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理. 示例代码地址:http://docs.opencv.org/3.0.0/examples.html(安装op ...

  3. 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形

    FindContours 在二值图像中寻找轮廓  int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_cont ...

  4. 【转载】openCV轮廓操作

    声明:非原创,转载自互联网,有问题联系博主 1.轮廓的提取 从图片中将目标提取出来,常常用到的是提取目标的轮廓. OpenCV里提取目标轮廓的函数是findContours(), 它的输入图像是一幅二 ...

  5. OpenCV2马拉松第24圈——轮廓提取

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...

  6. opencv——轮廓发现与轮廓(二值图像)分析

    引言 二值图像分析最常见的一个主要方式就是轮廓发现与轮廓分析,其中轮廓发现的目的是为轮廓分析做准备,经过轮廓分析我们可以得到轮廓各种有用的属性信息. 这里顺带提下边缘检测,和轮廓提取的区别: 边缘检测 ...

  7. OpenCV 轮廓基本特征

     http://blog.csdn.net/tiemaxiaosu/article/details/51360499 OpenCV 轮廓基本特征 2016-05-10 10:26 556人阅读 评论( ...

  8. 三维模型2.5D轮廓提取及遮挡部分的剔除

    轮廓提取相对容易,只需在2.5D渲染视角下,导出模型的顶点坐标以及基于视角的消隐后的三角形面,将三角面投影后合并就可得到轮廓,轮廓坐标基于2.5d图的基准坐标换算就得到.提取轮廓的在我另外一篇文章中有 ...

  9. 图像处理-07-图像的轮廓提取-Robert算子

    图像的轮廓提取-Robert算子 图像的边缘:周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,边缘广泛存在于物体与背景之间.物体与物体之间,基元与基元之间,是图像分割的重要依据. 物体的边缘是由 ...

随机推荐

  1. Zero to Build: Create new Xamarin apps in minutes with AppMap

    Creating a new Xamarin.Forms app can be an intimidating task, especially if you add in content pages ...

  2. python--使用pymyslq操作数据库

    1.安装pymysql 在命令行内输入 pip install pymysql : 2.pycharm连接mysql 在进行本文以下内容之前需要注意: 你有一个MySQL数据库,并且已经启动. 你有可 ...

  3. 目前市场上有些什么样的数据库管理系统(DBMS),它们都有什么特点?它们之间的优缺点有什么?它们的使用场合分别是?

    1 要求 目前市场上有些什么样的数据库管理系统(DBMS),它们都有什么特点?它们之间的优缺点有什么?它们的使用场合分别是? 1.1 目前市场上有些什么样的数据库管理系统(DBMS) 目前市场上的数据 ...

  4. 基准对象object中的基础类型----字符串 (三)

    object有如下子类: CLASSES object basestring str unicode buffer bytearray classmethod complex dict enumera ...

  5. 为什么开启子进程 一定要放在 if __name__ == '__main__' 下面

  6. scrapy 登陆知乎

    参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time import r ...

  7. 解决nginx发布网站跨目录访问

    解决nginx发布网站跨目录访问(thinkphp5+lnmp) 到:usr/local/nginx/conf/vim fastcgi.cof 把最后一行加上井号#注释掉保存重启 restart 参考 ...

  8. __init__、__new__、__call__ 方法

    __init__方法 __init__方法负责对象的初始化,系统执行该方法前,其实该对象已经存在了,要不然初始化什么东西呢?先看例子: # class A(object): python2 必须显示地 ...

  9. [2017-7-27]Android Learning Day5

    总结篇! 吭哧吭哧了三天,最近不断研究<第一行代码:第二版>170多页的那个新闻实践项目,虽然也没有用到数据库和一些Web爬虫的知识,新闻数据都是随机生成的字符串...... 但还是很开心 ...

  10. NOIP2015斗地主(搜索+模拟+贪心)

    %%%Luan 题面就不说了,和斗地主一样,给一组牌,求最少打几次. 注意一点,数据随机,这样我们瞎搞一搞就可以过,虽然直接贪心可以证明是错的. 枚举方法,每次搜索按照(三顺子>二顺子>普 ...