OpenCV 轮廓检测

在 OpenCV 中,轮廓检测是一种用于查找图像中具有相似颜色或强度的连通像素组的技术,这些像素组通常代表了图像中的物体边缘。轮廓可以用来识别和分割图像中的物体,是计算机视觉应用中的一个重要步骤,如目标识别、形状分析等。

轮廓检测的基本步骤包括:

预处理:

将彩色图像转换为灰度图像(如果图像不是灰度的)。

应用阈值处理或边缘检测算法(如Canny边缘检测)将图像转换为二值图像,以便更清晰地突出物体和背景之间的差异。

轮廓发现:

使用cv2.findContours()函数来找到图像中的所有轮廓。此函数需要一个二值图像作为输入。

函数的两个主要参数是轮廓检索模式(mode)和轮廓近似方法(method)。

轮廓近似:

cv2.findContours()函数返回轮廓的列表,以及它们之间的层次关系(如果检索模式允许的话)。

每个轮廓是一个由点构成的Numpy数组,这些点定义了轮廓的边界。

轮廓绘制:

使用cv2.drawContours()函数可以在原图上绘制出找到的轮廓,这对于可视化轮廓很有帮助。

以下是一个基本的轮廓检测的 Python 代码示例:

python 复制代码
# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_your_image.jpg')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 应用二值化
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 找到轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

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

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

在上述代码中,cv2.RETR_TREE表示要检索所有轮廓并构建完整的层次结构,而cv2.CHAIN_APPROX_SIMPLE则用于压缩水平、垂直和对角方向上的连续点,仅保留端点。

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

相关推荐
西安老张(AIGC&ComfyUI)1 分钟前
第006章:ComfyUI图片绘制常用大模型介绍
人工智能·aigc·comfyui
yongyoudayee3 分钟前
AI原生与AI附加:CRM选型的架构分水岭与六维评估框架
人工智能·架构·ai-native
哈哈,柳暗花明3 分钟前
人工智能专业术语详解(G)
人工智能·专业术语
高洁015 分钟前
打造行业知识图谱三步走
python·深度学习·数据挖掘·知识图谱
码农小白AI8 分钟前
钢筋力学检测报告校验升级:IACheck通审Agent版如何实现原始试验记录全链路溯源
人工智能
招标采购导航网9 分钟前
招标采购导航网的召回通道设计:为什么同时用协同过滤、向量召回、规则召回三种策略
大数据·人工智能
码农阿强12 分钟前
startapi.top|gemini-3.1-flash-image-preview(Nano Banana 2 )商用产品文档
人工智能
scx_link18 分钟前
Softmax回归
人工智能·数据挖掘·回归
装不满的克莱因瓶22 分钟前
使用 PyTorch Tensor 的相关数据处理
人工智能·pytorch·python·深度学习·机器学习·ai
Alluxio25 分钟前
Alluxio AI 3.9 正式发布:为任意 AI 训练框架提供 checkpoint 加速能力
人工智能