python cv2提取图片轮廓

import cv2
import numpy as np

# 读取图像并进行预处理
image = cv2.imread('test.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 图像二值化处理
ret, threshold = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)

# 寻找图像轮廓
contours, hierarchy = cv2.findContours(threshold, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)

# 显示结果
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
 

 

cv2.findContours函数是OpenCV中用于查找图像轮廓的函数。它的参数如下所示:

contours, hierarchy = cv2.findContours(image, mode, method, contours=None, hierarchy=None, offset=None)

参数解释如下:

  • image: 输入的二值图像,通常为灰度图像或者经过二值化处理的图像。

  • mode: 轮廓检索模式,指定轮廓的检索方式。可选的模式有以下几种:

    • cv2.RETR_EXTERNAL: 只检测外部轮廓,忽略图像内部的轮廓。
    • cv2.RETR_LIST: 检测所有轮廓,不建立轮廓间的层级关系。
    • cv2.RETR_CCOMP: 检测所有轮廓,并且建立两层的层级关系。
    • cv2.RETR_TREE: 检测所有轮廓,并且建立完整的层级树结构。
  • method: 轮廓的近似方法,指定轮廓的近似方式。可选的方法有以下几种:

    • cv2.CHAIN_APPROX_NONE: 保存所有的轮廓点。
    • cv2.CHAIN_APPROX_SIMPLE: 仅保存轮廓的终点。
    • cv2.CHAIN_APPROX_TC89_L1: 使用Teague-Chinlund的方法进行轮廓近似。
    • cv2.CHAIN_APPROX_TC89_KCOS: 使用Teague-Chinlund-Kim的方法进行轮廓近似。
  • contours (可选): 输出参数,用于存储找到的轮廓,每个轮廓存储为一个numpy数组。

  • hierarchy (可选): 输出参数,用于存储轮廓的层级信息,每个轮廓的层级信息存储为一个四元组 (next, previous, first_child, parent)

  • offset (可选): 轮廓坐标的可选偏移量。

函数返回两个值:

  • contours: 找到的轮廓列表,每个轮廓存储为一个numpy数组。

  • hierarchy: 轮廓的层级信息,每个轮廓的层级信息存储为一个四元组 (next, previous, first_child, parent)

注意:根据OpenCV的版本,返回值的顺序可能不同。在旧版本的OpenCV中,返回值顺序是 (contours, hierarchy),而在较新的版本中是 (hierarchy, contours)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值