美文网首页
20、轮廓发现

20、轮廓发现

作者: BigBigGuy | 来源:发表于2019-01-08 16:46 被阅读0次
image.png
def contours_function(image):
    '''
        1、高斯模糊
        2、灰度图像
        3、全局二值化
        4、FindCoutours:找出轮廓
    '''
    dst = cv.GaussianBlur(image,(3,3),0)
    gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY| cv.THRESH_OTSU)
    cv.imshow("Binary", binary)

    '''
       cv.findContours:
            mode = cv.RETR_EXTERNAL:表示找出最外层的轮廓
                    cv.RETR_TREE:表示找出所有轮廓
    '''
    cloneImage, contours, hierachy = cv.findContours(
        binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        cv.drawContours(image, contours, i, (0, 0, 255), 2)
        print(i)
    cv.imshow("Detect_contours", image)
mode = cv.RETR_TREE
mode = cv.RETR_EXTERNAL

轮廓填充

# thickness = -1
 for i, contour in enumerate(contours):
    cv.drawContours(image, contours, i, (0, 0, 255), -1)

image.png

基于Canny边缘提取

def canny_edge_function(image):
    '''
        Canny边缘提取算法:
            1、进行高斯模糊:因为Canny对噪声比较敏感,所以先高斯模糊降噪
            2、灰度转移:转化为单通道
            3、计算梯度:Sobel/Scharr
            4、
            5、高低阈值输出二值图像
    '''
    blurred = cv.GaussianBlur(image, (3, 3), 0)
    gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)

    grad_x = cv.Sobel(gray, cv.CV_16SC1, 1, 0)
    grad_y = cv.Sobel(gray, cv.CV_16SC1, 0, 1)

    #低阈值:50;高阈值:150
    edge_output = cv.Canny(grad_x,grad_y,50,150)
    cv.imshow("Binary",edge_output)
    return edge_output

def contours_function(image):
    binary = canny_edge_function(image)
    cloneImage, contours, hierachy = cv.findContours(
        binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        cv.drawContours(image, contours, i, (0, 0, 255), -1)
        print(i)
    cv.imshow("Detect_contours", image)

基于Canny边缘提取

相关文章

  • 20、轮廓发现

    轮廓填充 基于Canny边缘提取

  • 轮廓发现

    轮廓发现   轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果。相...

  • findContours(轮廓发现)

    概念 对于图像中的物体寻找轮廓(外围或全部),这里使用OpenCV里的findContours进行提取,并结合dr...

  • 028-Opencv笔记-轮廓发现

    轮廓发现 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果API介...

  • opencv+python -- 轮廓发现

    轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果 Code 运行结...

  • Android智能识别 - 银行卡区域裁剪(原理篇)

    在 Android智能识别 - 银行卡区域裁剪 一文中我们用了如下几行代码,获取发现银行卡的轮廓: 轮廓发现是图像...

  • Android智能识别 - 银行卡区域裁剪(原理篇)

    在 Android智能识别 - 银行卡区域裁剪 一文中我们用了如下几行代码,获取发现银行卡的轮廓: 轮廓发现是图像...

  • 轮廓

    随手翻了一下近两个月写的文字,五花八门,奇形怪状。有点像间歇性精神病人,更像跳跃不定的心电图,一惊一乍,没个谱。有...

  • 轮廓

    我们相拥的地方变得凄凉,星光璀璨的夜空不再明亮,雨后的烟雾更加荒诞,夜晚的公园让人害怕。在凌晨两点的马路,我点燃...

  • 轮廓

    脸蛋的轮廓一开始是圆润的 后来消瘦,下巴是尖的 最终,是融化的黄油块 塌掉的胶原蛋白在时光的照片里 安详地枕着岁月匆忙

网友评论

      本文标题:20、轮廓发现

      本文链接:https://www.haomeiwen.com/subject/plhbrqtx.html