• opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓


    阅读对象:无要求。

    1.代码

    '''
    OpenCV中的轮廓
    轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。
    
    cv2.findContours()在一个二值图像中查找轮廓 
    有三个参数:
    第一个:输入图像;
    第二个:轮廓检索模式;
    第三个:轮廓近似方法
          cv2.CHAIN_APPROX_NONE:所有的边界点都会被存储。但是我们真的需要这么多点吗?例如,当我们找的边界是一条直线时。你用需要直线上所有的点来表示直线吗?不是的,我们只需要这条直线的两个端点而已。
          cv2.CHAIN_APPROX_SIMPLE :会将轮廓上的冗余点都去掉,压缩轮廓,从而节省内存开支。
    返回值有三个:
    第一个:图像,
    第二个:轮廓,轮廓是一个 Python列表,其中存储这图像中的所有轮廓,每一个轮廓都是一个 Numpy 数组,包含对象边界点(x,y)的坐标。
    第三个:(轮廓的)层析结构。
    #######教程说有三个返回值,但是我用的opencv2.4版本只有两个返回值:轮廓和层次结构,切记########
    
    cv2.drawContours() 可以被用来绘制轮廓。它可以根据你提供的边界点绘制任何形状。
    第一个参数:原始图像,
    第二个参数:轮廓,一个 Python 列表。
    第三个参数:轮廓的索引(在绘制独立轮廓时很有用,当设置为-1时绘制所有轮廓)
    接下来的参数:轮廓的颜色和厚度等。
    '''
    import numpy as np
    import cv2
    dir='C:/Users/Thinkpad/Desktop/picture/'
    im = cv2.imread(dir + 'q.jpg')
    imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
    ret,thresh = cv2.threshold(imgray,127,255,0)
    contours, hierarchy= cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    cv2.drawContours(im,contours, -1, (0,0,255),3)
    cv2.imshow("im", im)  
    cv2.waitKey(0)  

    2.cv2.imshow("im", im) 的结果

    图1 结果

    参考资料:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html

     

    end!!

  • 相关阅读:
    Java8之Optional用法举例
    Java多线程之ThreadPoolTaskExecutor用法
    Java多线程之ExecutorService使用说明
    CountDownLatch同步计数器使用说明
    读取excel文件内容 (hutool-poi)
    字符串工具-StrUtil(hutool)
    IDEA 常用插件
    在 Gerrit 仓库中创建空分支
    Linux idea 输入中文出现下划线乱码
    ArchLinux 修改 MariaDB 数据库路径后启动报错 Can't create test file /xxxxx/xxxxx-test
  • 原文地址:https://www.cnblogs.com/llfisher/p/6557621.html
Copyright © 2020-2023  润新知