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

相关推荐
Techblog of HaoWANG9 分钟前
目标检测与跟踪 (8)- 机器人视觉窄带线激光缝隙检测系统开发
人工智能·opencv·目标检测·机器人·视觉检测·控制
laplace012315 分钟前
Claude Skills 笔记整理
人工智能·笔记·agent·rag·skills
2501_9414185517 分钟前
【计算机视觉】基于YOLO11-P6的保龄球检测与识别系统
人工智能·计算机视觉
码农三叔29 分钟前
(8-3)传感器系统与信息获取:多传感器同步与传输
人工智能·机器人·人形机器人
人工小情绪36 分钟前
Clawbot (OpenClaw)简介
人工智能
2401_838472511 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
2501_933329551 小时前
品牌公关AI化实践:Infoseek舆情系统技术架构解析
人工智能·自然语言处理
CoLiuRs1 小时前
语义搜索系统原理与实现
redis·python·向量·es
咋吃都不胖lyh1 小时前
CLIP 不是一个 “自主判断图像内容” 的图像分类模型,而是一个 “图文语义相似度匹配模型”—
人工智能·深度学习·机器学习
zhihuaba1 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python