• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python OpenCV 基于图像边缘提取的轮廓发现函数

    基础知识铺垫

    在图像中,轮廓可以简单的理解为连接具有相同颜色的所有连续点(边界)的曲线,轮廓可用于形状分析和对象检测、识别等领域。

    轮廓发现的原理:先通过阈值分割提取目标物体,再通过边缘检测提取目标物体轮廓。
    一个轮廓就是一系列的点(像素),这些点构成了一个有序的点集合。

    使用 cv2.findContours 函数可以用来检测图像的边缘。

    函数原型说明

    contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
    

    我使用的 Python OpenCV 是 4.0 以上版本,如果你使用的是 3.0 以上,可能存在返回值差异问题。
    参数说明如下:

    备注:image 参数需要是二值图,而不是灰度图,返回结果是等高线和层次结构。

    轮廓检索模式,有四种

    轮廓逼近方法

    了解上述内容之后,就可以应用轮廓发现函数了,代码如下:

    import cv2 as cv
    
    src = cv.imread("./both.jpeg")
    
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
    ret, thresh = cv.threshold(gray, 150, 255, 0)
    cv.imshow("thresh",thresh)
    # 寻找轮廓
    contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
    

    轮廓发现之后,还要通过 cv2.drawContours 函数绘制轮廓,该函数原型如下:

    image = cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])
    

    参数说明如下:

    测试代码与运行结果如下:

    import cv2 as cv
    # help(cv.drawContours)
    src = cv.imread("./both.jpeg")
    
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
    ret, thresh = cv.threshold(gray, 150, 255, 0)
    cv.imshow("thresh",thresh)
    # 寻找轮廓
    contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
    
    # print(contours)
    # print(hierarchy)
    # 绘制轮廓
    cv.drawContours(src,contours,-1,(200,0,150),2)
    
    cv.imshow('src',src)
    cv.waitKey(0)

    到此这篇关于Python OpenCV 基于图像边缘提取的轮廓发现函数的文章就介绍到这了,更多相关OpenCV 边缘提取轮廓 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python-opencv在有噪音的情况下提取图像的轮廓实例
    • Python实现使用卷积提取图片轮廓功能示例
    • Python图像处理之目标物体轮廓提取的实现方法
    上一篇:Python解析JSON对象的全过程记录
    下一篇:anaconda jupyter不能导入安装的lightgbm解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python OpenCV 基于图像边缘提取的轮廓发现函数 Python,OpenCV,基于,图像,边缘,