数字图像处理(实践篇)二 画出图像中目标的轮廓

目录

[一 涉及的OpenCV函数](#一 涉及的OpenCV函数)

[二 代码](#二 代码)

[三 效果图](#三 效果图)


一 涉及的OpenCV函数

python 复制代码
contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])  
  • image:源图像。
  • mode:轮廓的检索方式。cv2.RETR_EXTERNAL 检测外轮廓)、cv2.RETR_LIST (检测的轮廓不建立 等级关系)、cv2.RETR_CCOMP(建立两个等级 的轮廓,上面的一层为外边界 ,里面的一层为内孔的边界 信息)、cv2.RETR_TREE(建立一个等级树结构的轮廓)。
  • method:一般用 cv2.CHAIN_APPROX_SIMPLE,表示用尽可能少的像素点表示轮廓。cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1。
  • contours:图像轮廓坐标。list中每个元素都是图像中的一个轮廓,用numpy中的ndarray表示
  • hierarchy:返回值,包含有关图像轮廓的拓扑信息。[Next, Previous, First Child, Parent]。

二 代码

python 复制代码
import cv2
import matplotlib.pyplot as plt
def dealImg(img):
    b, g, r = cv2.split(img)
    img_rgb = cv2.merge([r, g, b])
    return img_rgb
def dealImageResult(img_path):
    img = cv2.imread(img_path)
    img_copy = img.copy()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # OTSU方法实现前景与背景分割
    ret2, dst_OTSU = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    contours, hierarchy = cv2.findContours(dst_OTSU, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    contourPic = cv2.drawContours(img_copy, contours, -1, (0, 255, 0), 3)
    fig = plt.figure(figsize=(8, 8))
    titles = ["img", "gray", "OTSU", "contourPic"]
    img = dealImg(img)
    contourPic = dealImg(contourPic)
    images = [img, gray, dst_OTSU, contourPic]
    for i in range(4):
        plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])
    plt.show()
    fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':
    dealImageResult("1.png")
    pass

三 效果图

前文回顾

入门篇目录

数字图像处理(入门篇)一 图像的数字化与表示

数字图像处理(入门篇)二 颜色空间

数字图像处理(入门篇)三 灰度化

数字图像处理(入门篇)四 像素关系

数字图像处理(入门篇)五 图像数据预处理之颜色空间转换

数字图像处理(入门篇)六 图像数据预处理之坐标变化

数字图像处理(入门篇)七 图像数据预处理之灰度变化

数字图像处理(入门篇)八 图像数据预处理之直方图

数字图像处理(入门篇)九 图像数据预处理之滤波

数字图像处理(入门篇)十 边缘检测

数字图像处理(入门篇)十一 形态学处理

数字图像处理(入门篇)十二 自适应阈值分割

数字图像处理(入门篇)十三 仿射变换

数字图像处理(入门篇)十四 透视变换

实践篇目录

数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!

相关推荐
啊阿狸不会拉杆6 天前
《数字图像处理》实验2-空间域灰度变换与滤波处理
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》实验6-图像分割方法
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》-实验1
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》实验3-频率域处理方法
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》实验8-图像识别与分类
图像处理·人工智能·算法·分类·数据挖掘·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》实验7-图像特征提取
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆6 天前
《数字图像处理》实验4-图像复原
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆9 天前
《数字图像处理》第 11 章 - 特征提取
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆13 天前
《数字图像处理》第 5 章-图像复原与重建
图像处理·人工智能·算法·matlab·数字图像处理
啊阿狸不会拉杆14 天前
《数字图像处理》第7章:小波变换和其他图像变换
图像处理·人工智能·python·算法·机器学习·计算机视觉·数字图像处理