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

相关推荐
格林威9 分钟前
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用超短曝光功能(曝光可设置1微秒)(Python)
开发语言·人工智能·python·数码相机·计算机视觉
AI实战18 分钟前
可信的人类与人工智能协作:基于人类反馈和物理知识的安全自主驾驶强化学习
人工智能·安全
dundunmm19 分钟前
分类评价指标
人工智能·分类·数据挖掘·分类指标
AI原吾20 分钟前
探索SVG的奥秘:Python中的svgwrite库
android·开发语言·python·svgwrite
Tinalee-电商API接口呀29 分钟前
python爬虫爬取淘宝商品比价||淘宝商品详情API接口
大数据·开发语言·人工智能·爬虫·python·json
week_泽31 分钟前
安装python,jupter notebook,anaconda换源
开发语言·python
朗迪锋37 分钟前
航空维修培训中的虚拟现实辅助工程技术应用
大数据·人工智能·安全·vr·虚拟现实
张琪杭1 小时前
卷积神经网络(二)CIFAR100类别分类
人工智能·分类·cnn
AI创客岛1 小时前
如何通过LlamaIndex工作流程简化我的研究和演示
人工智能·计算机视觉
标贝科技2 小时前
标贝科技个性化音色定制方案 解锁语音合成无限可能
人工智能·科技·人机交互·语音识别