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

相关推荐
开源技术1 天前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
Niuguangshuo1 天前
深入解析Stable Diffusion基石——潜在扩散模型(LDMs)
人工智能·计算机视觉·stable diffusion
迈火1 天前
SD - Latent - Interposer:解锁Stable Diffusion潜在空间的创意工具
人工智能·gpt·计算机视觉·stable diffusion·aigc·语音识别·midjourney
wfeqhfxz25887821 天前
YOLO13-C3k2-GhostDynamicConv烟雾检测算法实现与优化
人工智能·算法·计算机视觉
芝士爱知识a1 天前
2026年AI面试软件推荐
人工智能·面试·职场和发展·大模型·ai教育·考公·智蛙面试
Li emily1 天前
解决港股实时行情数据 API 接入难题
人工智能·python·fastapi
Aaron15881 天前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
J_Xiong01171 天前
【Agents篇】04:Agent 的推理能力——思维链与自我反思
人工智能·ai agent·推理
wfeqhfxz25887821 天前
农田杂草检测与识别系统基于YOLO11实现六种杂草自动识别_1
python
星爷AG I1 天前
9-26 主动视觉(AGI基础理论)
人工智能·计算机视觉·agi