python+opencv获取图像中图形的轮廓

新手入门,大佬球放过。

话不多直接上代码!!

opencv中获取图形的轮廓:

1.首先要进行灰度图转换:

功能:函数cvtColor实现色彩空间转换。调用resize函数,重新设定图片大小,提高运行效率;

2.然后将图片二值化

函数原型:ret, thresh = cv.threshold(src, thresh, maxval, type)

 参数1:src——输入图像

参数2:thresh——阈值

参数3:maxval——由参数4决定

参数4:type——阈值处理模式选择

阈值处理模式大概有以下几种:

python+opencv获取图像中图形的轮廓_第1张图片

3.获取轮廓信息并画出轮廓

寻找轮廓——findContours函数原型:findContours(image, mode, method)  

参数1:输入图像

参数2:轮廓的检索模式,主要有以下4种:

 参数3:轮廓的近似办法,常用的有以下2种:

画出轮廓——drawContours函数原型:drawContours(image, contours, contourldx, color, thickness)

参数1:image:需要画出轮廓的图像

参数2:contours:输入的所有轮廓(每个轮廓以点集的方式存储)

参数3:contourldx:画第几个轮廓,常用-1,画出全部轮廓

参数4:color:画出轮廓线条的颜色

参数5:thickness:画出轮廓线条的粗细

4.全部代码:

    # 读取原图
    Src = cv.imread("D:/jiqi/photos/2.bmp")
    Src = cv.resize(Src, (600, 500))
    cv.imshow("Src", Src)

    # 转为灰度图
    dst = cv.cvtColor(Src, cv.COLOR_BGR2GRAY)
    # cv.imshow("input", Src)
    # 阈值处理(二值处理)
    ret, thresh = cv.threshold(dst, 127, 255, cv.THRESH_BINARY)
    # cv.imshow("thresh", thresh)

    # 获取轮廓信息
    contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
    result = cv.drawContours(Src, contours, -1, (0, 0, 255), 2)
    cv.imshow("result", result)

5.结果输出:

 python+opencv获取图像中图形的轮廓_第2张图片

 

 

 

你可能感兴趣的:(opencv,python)