【OpenCV】轮廓检测

本文介绍了OpenCV中的轮廓检测,包括如何找到正方形和不规则多边形的轮廓,探讨了凸轮廓与Douglas-Peucker算法的重要性,以及利用HoughLinesP进行直线检测和HoughCircles进行圆检测的方法。在实际应用中,直线和多边形的表示有助于简化后续处理。
摘要由CSDN通过智能技术生成

轮廓检测的作用:
1.可以检测图图像或者视频中物体的轮廓
2.计算多边形边界,形状逼近和计算感兴趣区域

先看一个较为简单的轮廓检测:

import cv2
import numpy as np
# 创建一个200*200的黑色空白图像
img = np.zeros((200, 200), dtype=np.uint8)
# 利用numpy数组在切片上赋值的功能放置一个白色方块
img[50:150, 50:150] = 255

# 对图像进行二值化操作
# threshold(src, thresh, maxval, type, dst=None)
# src是输入数组,thresh是阈值的具体值,maxval是type取THRESH_BINARY或者THRESH_BINARY_INV时的最大值
# type有5种类型,这里取0: THRESH_BINARY ,当前点值大于阈值时,取maxval,也就是前一个参数,否则设为0
# 该函数第一个返回值是阈值的值,第二个是阈值化后的图像
ret, thresh = cv2.threshold(img, 127, 255, 0)

# findContours()有三个参数:输入图像,层次类型和轮廓逼近方法
# 该函数会修改原图像,建议使用img.copy()作为输入
# 由函数返回的层次树很重要,cv2.RETR_TREE会得到图像中轮廓的整体层次结构,以此来建立轮廓之间的‘关系’。
# 如果只想得到最外面的轮廓,可以使用cv2.RETE_EXTERNAL。这样可以消除轮廓中其他的轮廓,也就是最大的集合
# 该函数有三个返回值:修改后的图像,图像的轮廓,它们的层次
image, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
img = cv2.drawContours(color, contours, -1, (0, 255, 0), 2)
cv2.imshow("contours", color)
cv2.waitKey()
cv2.destroyAllWindows()

轮廓检测

上面是找到一个正方形的轮廓,下面看如何找到不规则的多边形轮廓:

  • 2
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
轮廓检测是指在图像处理中,通过查找图像中的连续边界,从而找到物体的轮廓。在OpenCV中,可以使用findContours函数来实现轮廓检测。该函数接受一个二值图像作为输入,并返回一个包含所有轮廓的列表。每个轮廓都是一个由点组成的数组。 在给定的代码示例中,使用了OpenCV的findContours函数来检测图像中的轮廓。该函数接受一个二值图像和一些参数,返回一个包含所有轮廓的列表。然后,使用drawContours函数将轮廓绘制在图像上。 此外,还可以使用contourArea函数计算轮廓的面积,使用arcLength函数计算轮廓的周长。这些函数可以用来进一步分析轮廓的特征。 总结起来,轮廓检测是一种在图像处理中常用的技术,可以用于物体识别、形状分析等应用领域。通过OpenCV提供的函数,可以方便地实现轮廓检测,并获取轮廓的面积、周长等信息。 #### 引用[.reference_title] - *1* *2* [python opencv轮廓检测](https://blog.csdn.net/Mr_Nobody17/article/details/119995281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenCV 图像轮廓检测](https://blog.csdn.net/qq_37529913/article/details/129234277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值