zoukankan      html  css  js  c++  java
  • 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!!

  • 相关阅读:
    STM32之ADC+步骤小技巧(英文)
    STM32之待机唤醒
    STM32_RTC君
    STM32之输入捕获以及小小应用(库)
    STM32之PWM君
    STM32之通用定时器
    STM32之看门狗(独立与窗口)
    零基础学习qt4 第七章的第一个例子
    SPI
    STM32串口中断的一些资料
  • 原文地址:https://www.cnblogs.com/llfisher/p/6557621.html
Copyright © 2011-2022 走看看