前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OpenCV 入门教程:寻找和绘制轮廓

OpenCV 入门教程:寻找和绘制轮廓

作者头像
小蓝枣
发布于 2023-07-10 08:10:34
发布于 2023-07-10 08:10:34
63900
代码可运行
举报
运行总次数:0
代码可运行

OpenCV 入门教程:寻找和绘制轮廓

导语

寻找和绘制轮廓是图像处理中常用的技术之一,用于识别、定位和分析图像中的目标区域。在 OpenCV 中,寻找和绘制轮廓可以通过边缘检测和形态学操作实现。本文将以寻找和绘制轮廓为中心,为你介绍使用 OpenCV 进行轮廓处理的基本步骤和实例。

😃😄 ❤️ ❤️ ❤️

一、寻找轮廓

寻找轮廓是通过边缘检测和形态学操作,将图像中的目标区域边界提取出来。以下是一个使用寻找轮廓的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2

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

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

# 进行边缘检测
edges = cv2.Canny(gray_image, 100, 200)

# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

在上述示例中,我们首先将彩色图像转换为灰度图像,然后使用 Canny 函数进行边缘检测。接下来,使用 findContours 函数寻找图像中的轮廓。 RETR_EXTERNAL 参数表示只检测外部轮廓, CHAIN_APPROX_SIMPLE 参数表示简化轮廓的表示方式。

二、绘制轮廓

绘制轮廓是通过将寻找到的轮廓绘制在图像上,用于可视化和分析。以下是一个使用绘制轮廓的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2

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

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

# 进行边缘检测
edges = cv2.Canny(gray_image, 100, 200)

# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

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

在上述示例中,我们在原始图像上使用 drawContours 函数绘制寻找到的轮廓。 contours 参数是轮廓列表, -1 参数表示绘制所有轮廓, (0, 255, 0) 参数表示绘制轮廓的颜色, 2 参数表示绘制轮廓的线宽。

三、示例应用

现在,我们来看一些常见的示例应用,演示寻找和绘制轮廓的操作:

3.1 目标检测和定位

使用寻找和绘制轮廓可以实现目标检测和定位。以下是一个示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2

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

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

# 进行边缘检测
edges = cv2.Canny(gray_image, 100, 200)

# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

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

这个示例将加载名为" image.jpg "的图像文件,并通过边缘检测和轮廓绘制实现目标检测和定位。

展示:

3.2 图像分割

寻找和绘制轮廓还可以用于图像分割,将图像中的目标区域提取出来。以下是一个示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2

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

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

# 进行边缘检测
edges = cv2.Canny(gray_image, 100, 200)

# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

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

# 提取目标区域
segmented_image = cv2.bitwise_and(image, image, mask=edges)

这个示例将加载名为" image.jpg "的图像文件,并通过边缘检测和轮廓绘制提取出目标区域。

展示:

总结

通过本文的介绍,你已经了解了使用 OpenCV 进行寻找和绘制轮廓的基本步骤。你学会了使用边缘检测和 findContours 函数寻找图像中的轮廓,并使用 drawContours 函数绘制轮廓。

寻找和绘制轮廓是图像处理中常用的技术,可以用于目标检测、定位、图像分割等多个领域。通过调整边缘检测和轮廓绘制的参数,你可以根据实际需求得到所需的轮廓处理效果。

祝你在使用 OpenCV 进行寻找和绘制轮廓的过程中取得成功!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python数字图像处理与机器视觉
使用python PIL库读取图像,该方法返回一个 Image 对象,Image对象存储着这个图像的格式(jpeg,jpg,ppm等),大小和颜色模式(RGB),它含有一个show()方法用来显示图像:
AnieaLanie
2021/12/07
1.1K0
Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现
我还有改变的可能性 一想起这一点 我就心潮澎湃 文章目录 一、直线检测 使用霍夫直线变换做直线检测,前提条件:边缘检测已经完成 # 标准霍夫线变换 cv2.HoughLines(image, rho, theta, threshold, lines=None, srn=None, stn=None, min_theta=None, max_theta=None) image:经过边缘检测的输出图像,8位,单通道二进制源图像 rho:距离步长 theta:角度步长 threshold:阈值,只有
叶庭云
2020/09/17
8.4K0
Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现
13: 轮廓
谈起轮廓不免想到边缘,它们确实很像。简单的说,轮廓是连续的,边缘并不全都连续(下图)。其实边缘主要是作为图像的特征使用,比如可以用边缘特征可以区分脸和手,而轮廓主要用来分析物体的形态,比如物体的周长和面积等,可以说边缘包括轮廓。
CodecWang
2021/12/07
4570
13: 轮廓
OpenCV 入门教程:轮廓特征和轮廓匹配
轮廓特征和轮廓匹配是图像处理中用于描述和比较轮廓的技术。通过提取轮廓的形状、面积、周长等特征,并进行比较和匹配,我们可以实现目标识别、形状分析等应用。在本文中,我们将以轮廓特征和轮廓匹配为中心,为你介绍使用 OpenCV 进行轮廓处理的基本步骤和实例。
小蓝枣
2023/07/10
4.5K0
【OpenCV图像处理基础与OCR应用】
在现代计算机视觉中,OpenCV是一款非常流行且强大的工具库。它不仅支持基本的图像处理操作,还能与深度学习模型结合应用,解决实际问题。OCR(光学字符识别)是计算机视觉中的一个重要应用领域,广泛用于文档扫描、车牌识别、手写识别等。本文将带你从基础的图像处理开始,逐步了解OCR技术的原理,并结合OpenCV实现简单的OCR预处理流程。
机器学习司猫白
2025/03/09
1170
opencv可以有多有趣
这一段时间没怎么写博客,偶尔写一次也是比较正经的博客,感觉自己都不正常了。今天看课的时候突然来了灵感,那就整个烂活玩一玩。
小王不头秃
2024/06/19
1410
opencv可以有多有趣
PythonOpenCV图像处理
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,主要用于图像处理和计算机视觉任务。PythonOpenCV是使用Python编程语言的OpenCV库,它提供了一系列的函数和工具来处理和分析图像。在本文中,我们将深入探讨PythonOpenCV图像处理的核心概念、算法原理、最佳实践以及实际应用场景。
程序猿川子
2025/01/02
1320
PythonOpenCV图像处理
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
在当今数字化社会中,图像处理 和 计算机视觉 技术应用广泛,从日常的图像编辑、滤镜应用到专业的智能安防、自动驾驶等领域,这些技术无处不在。对于开发者来说,OpenCV 是一个功能强大的库,提供了各种图像处理和计算机视觉的工具,广泛用于 Python 开发中。
半截诗
2024/10/09
3.5K1
基于OpenCV 的车牌识别
车牌识别是一种图像处理技术,用于识别不同车辆。这项技术被广泛用于各种安全检测中。现在让我一起基于OpenCV编写Python代码来完成这一任务。
小白学视觉
2020/09/04
7.8K0
讲解python图像边缘检测
图像边缘检测是计算机视觉和图像处理中的重要任务,它用于检测图像中物体和区域之间的边缘和轮廓。在Python中,有多种方法可以进行图像边缘检测,本文将介绍一种常用的方法:Canny边缘检测算法。
大盘鸡拌面
2023/12/28
3550
opencv: 轮廓绘制 详细拆解(图示+源码)
过程图解 第一步 读取要进行处理的原图: origin_pic = './pic/6.jpg' save_folder = './generated_pics' img = cv2.imread(o
JNingWei
2018/09/28
1.3K0
opencv: 轮廓绘制 详细拆解(图示+源码)
OpenCV 轮廓 —— 轮廓查找
取值 含义 cv2.CHAIN_APPROX_NONE 存储了所有的轮廓点。也就是说,等高线的任意2个后续点(x1,y1)和(x2,y2)将是水平、垂直或对角线邻居,即 max (abs (x1-x2),abs (y2-y1)) = 1。 cv2.CHAIN_APPROX_SIMPLE 压缩水平、垂直和对角线段,只留下它们的端点。例如,一个直立的矩形轮廓用 4 个点进行编码。 cv2.CHAIN_APPROX_TC89_L1 运用了 Teh-Chin 连锁近似演算法的一种 cv2.CHAIN_APPROX_TC89_KCOS 运用了 Teh-Chin 连锁近似演算法的一种
为为为什么
2022/08/09
3.2K0
OpenCV 轮廓 —— 轮廓查找
笔记分享 : OpenCV中的常用边缘检测算法
哈喽,大家好,我们今天了解一下OpenCV中的边缘检测功能实现。在一些案例中,我们需要对物体进行边缘检测,而且是越精准越好。那么,OpenCV提供了哪些边缘检测的方法呢?
唐国梁Tommy
2021/05/28
1.3K0
笔记分享 : OpenCV中的常用边缘检测算法
讲解解决cv2.findContours返回值too many values to unpack (expected 2)的问题
在使用 OpenCV 进行图像处理时,cv2.findContours 是一个常用的函数,用于检测图像中的轮廓。然而,有时候我们可能会遇到一个错误提示:"too many values to unpack (expected 2)",这个问题通常是由于函数返回值的解包错误导致的。本文将详细讲解这个问题的原因和解决方法。
大盘鸡拌面
2023/12/27
1.6K0
opencv3编程入门_java基础与入门教程
想学习图像处理,不管是机器学习也好,深度学习也好,不会点OpenCV好像有点说不过去吧?所以,现在开始OpenCV的学习。
全栈程序员站长
2022/11/15
5570
opencv3编程入门_java基础与入门教程
讲解opencv检测黑色区域
在计算机视觉和图像处理领域,OpenCV是一个强大而广泛使用的开源库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV来检测并定位图像中的黑色区域。
大盘鸡拌面
2023/12/23
7310
【CV 向】如何打造一个“数串串神器“
之前吃串串火锅,老板数竹签不是称重就是用手慢慢数,但是称重似乎总是得不到正确的竹签数目,而且容易暗箱操作;而慢慢数总是要等待比较长的时间,感觉两者对处理数竹签的问题都存在比较大的缺陷。因此,一款可以数竹签的应用因此产生,一下就弥补了两种处理方式所存在的缺陷。
繁依Fanyi
2023/11/06
7590
基于 opencv 的图像处理入门教程
虽然计算机视觉领域目前基本是以深度学习算法为主,但实际上很多时候对图片的很多处理方法,并不需要采用深度学习的网络模型,采用目前成熟的图像处理库即可实现,比如 OpenCV 和 PIL ,对图片进行简单的调整大小、裁剪、旋转,或者是对图片的模糊操作。
kbsc13
2020/07/16
2.4K0
基于 opencv 的图像处理入门教程
借势AI系列:计算机眼中的图像:理解与处理【入门指南指导】
在计算机视觉领域,图像是计算机感知世界的窗口。计算机通过图像处理算法将图像转化为可以理解和分析的信息。这一过程涉及多个阶段,包括图像预处理、特征提取、对象检测和图像分析等。OpenCV(Open Source Computer Vision Library)是一个强大的开源库,广泛用于计算机视觉和图像处理任务。本文将探讨计算机如何“看到”图像,并通过OpenCV代码示例展示如何实现这些技术。
一键难忘
2024/10/31
800
OpenCV 入门教程:Laplacian算子和Canny边缘检测
边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测方法,它们能够帮助我们准确地检测图像中的边缘信息。 OpenCV 提供了这两种算子的实现函数,使得边缘检测更加简单和高效。本文将以 Laplacian 算子和 Canny 边缘检测为中心,为你介绍使用 OpenCV 进行边缘检测的基本步骤和实例。
小蓝枣
2023/07/10
1.2K0
OpenCV 入门教程:Laplacian算子和Canny边缘检测
相关推荐
Python数字图像处理与机器视觉
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文